日期时间与日期字符串的 Hasura 共换

Hasura coversion of date time from date string

提问人:Nizal Sha 提问时间:9/19/2023 更新时间:9/20/2023 访问量:52

问:

我在 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 中。

有人知道为什么会这样吗?

sql-server 日期时间 图形QL HASURA

评论

0赞 Thom A 9/19/2023
这看起来像注射;Hasura 不提供参数支持吗?我希望它能做到。
0赞 Zohar Peled 9/19/2023
除了汤姆的评论之外,BETWEEN 和魔鬼有什么共同点?

答:

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
对于我们的目的来说,这并不重要。不过,为了清楚起见,我已更改了参数。?