提问人:Nizal Sha 提问时间:9/19/2023 更新时间:9/20/2023 访问量:52
日期时间与日期字符串的 Hasura 共换
Hasura coversion of date time from date string
问:
我在 Hasura 中将此选择查询作为本机查询
SELECT
tblPhOrderSummary.Id as OrderId,
tblPhOrderSummary.CreatedOn as OrderDate,
tblItems.ItemCode as ItemCode,
tblPhOrderProducts.ItemDescription,
tblItems.ModelCode AS ModelCode,
tblItems.Barcode AS Barcode,
tblPhOrderProducts.LOT AS LOT,
'' AS Batch,
tblPhOrderProducts.Expiry AS Expiry,
tblItems.SalesPrice AS UnitSalesPrice,
tblPhOrderProducts.Instock AS InStock,
tblPhOrderProducts.CurrentStock AS CurrentStock,
tblPhOrderProducts.OrderQuantity AS OrderQuantity
FROM
tblPhOrderProducts
INNER JOIN
tblItems ON tblPhOrderProducts.ItemCode = tblItems.ItemCode
INNER JOIN
tblPhOrderSummary ON tblPhOrderProducts.OrderId = tblPhOrderSummary.Id
WHERE
tblPhOrderSummary.CustomerId = '{{CustomerId}}'
AND tblPhOrderSummary.CreatedOn BETWEEN '{{StartDate}}' AND '{{EndDate}}';
但是当我从邮递员那里调用它时,它会返回此错误
从字符串转换日期和/或时间时转换失败。
但是当我使用 Azure Data Studio 检查它时,这有效,我得到了我的选择结果。但不是在邮递员和 hasura api 中。
有人知道为什么会这样吗?
答:
1赞
plc
9/19/2023
#1
您不必在查询文本中引用本机查询参数。
Hasura 使用简单的字符串插值将本机查询参数转换为普通的 SQL 查询参数。
这意味着类似
tblPhOrderSummary.CustomerId = '{{CustomerId}}'
成为
tblPhOrderSummary.CustomerId = '?'
它不会有所需的参数传递语义。
相反,如果您要删除引号,那么
tblPhOrderSummary.CustomerId = {{CustomerId}}
成为
tblPhOrderSummary.CustomerId = ?
IIRC 这应该允许您将 your 暴露为 graphql 整数和 graphql 日期(当然,这仍然只是字符串文字)。{{CustomerId}}
{{StartDate}}
诊断此问题的一个好方法是在 hasura 控制台中使用本机查询的查询上的按钮。这应该告诉你这是否是你所遭受的痛苦。Analyze
评论
0赞
Dan Guzman
9/19/2023
我对 Hasura 一无所知,但 ODBC 参数标记代替了参数名称。?
0赞
plc
9/20/2023
对于我们的目的来说,这并不重要。不过,为了清楚起见,我已更改了参数。?
评论