【发布时间】:2022-11-04 18:58:24
【问题描述】:
我有一个在 SQL Server 中工作得很好的查询,但我需要一些帮助来进行所需的语法修改,以使其在 Synapse SQL 中工作。任何帮助,将不胜感激! id 是 unix 时间戳。我想使用unix时间戳按时间范围计算前一天过滤的id
SELECT COUNT(Id)
FROM [dbo].[name]
WHERE Id >= CONVERT(bigint, DATEDIFF(SECOND,'1970-01-01', CONVERT(date,dateadd(d, -1, GETDATE()))))*1000
and Id < CONVERT(bigint, DATEDIFF(SECOND,'1970-01-01', CONVERT(date,GETDATE())))*1000
【问题讨论】:
-
如果它不能在 Azure Synapse 上运行,如果你解释它为什么不能运行会很有帮助。
-
我不知道为什么它不起作用。它产生一个空列,没有错误
-
您可能想要检查您从表达式中获得的值(例如
CONVERT(bigint, DATEDIFF(SECOND,'1970-01-01', CONVERT(date,dateadd(d, -1, GETDATE()))))*1000)。可能返回的值不是您所期望的。例如,Azure 服务(通常)以 UTC 运行,因此GETDATE()可能会提供与您在本地获得的完全不同的价值。如果您的 epoch 的值不是基于 UTC 的,那么您的查询不会给您返回您期望的结果。 -
你能分享样本输入ID吗?
-
当然,一个 id 的例子是:1622079015031
标签: sql sql-server azure-synapse