【发布时间】:2022-01-02 01:53:11
【问题描述】:
我正在使用 azure ADF,但在 azure ADF 上执行此查询时遇到问题:
SELECT COUNT(*) AS c
FROM TABLE
WHERE CONVERT(date, (FORMAT(DATEADD(second, CONVERT(bigint, TS) / 1000, '19700101'), 'yyyy-MM-dd'))) = CONVERT(Date, GETDATE())
输出错误
算术溢出
但如果我将 = 更改为 >=,查询将起作用并返回输出。
TS 是 UNIXTIMESTAMP,类似于 1637680012264。
使用>= 和< 的组合是不行的,因为我处理的是不连续的日子(我需要使用WHERE TS IN (date1, date2, etc...)
有人可以帮我吗?提前致谢
【问题讨论】:
-
dateadd已经返回了一个datetime,你为什么用FORMAT只重铸成date? -
@HoneyBadger 因为我需要'yyyy-MM-dd'中的日期,我不需要时间
-
所以
CONVERT(date, ......FORMAT()到目前为止是 the worst possible way to do this。 -
@SalvatoreBonanno 所以?只需将
dateadd的结果转换为日期即可。 -
@HoneyBadger 刚试过,同样的错误
标签: sql sql-server azure tsql azure-data-factory