【发布时间】:2017-10-01 13:42:57
【问题描述】:
我正在尝试从 sql 表中提取每小时值,其中记录有 UTC 时间戳(比我的本地时间早 7 小时)。我试图提取的数据将其总值作为从今天早上 6 点到明天早上 6 点(当地时间)的值的总和。我试图使用 dateadd 如下:
SELECT VALUES FROM TABLE1 WHERE TRANTIME BETWEEN
DATEADD(HOUR, 13, CONVERT(DATETIME, CONVERT(DATE, GETUTCDATE()))
AND
DATEADD(HOUR, 37, CONVERT(DATETIME, CONVERT(DATE, GETUTCDATE()))
逻辑是今天早上 6 点是距 UTC 午夜 13 小时,而明天早上将是距前一个 dat 午夜 37 小时。
但是问题是当 UTC 日期翻转时,我没有任何位于 between 子句中的当天数据,因为 UTC 时间现在就像 00 或 01 小时。
我不确定如何在常规日期处理 UTC 日期的滚动。
【问题讨论】:
-
我认为你必须得到连续两天之间的差异,即第一个 UTC 日期的 11 小时和下一个 UTC 日期的 13 小时。
-
您使用的是什么版本的 SQL-Server? 2016年有这个...docs.microsoft.com/en-us/sql/t-sql/queries/…
-
它的 SQL 2014,我不确定我们是否有这个。
标签: sql sql-server datetime