从表中检索特定24小时时间范围的记录

时间:2017-05-03 15:57:32

标签: sql sql-server datetime

我正在尝试从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个小时,明天早上将是自上一个午夜午夜起37个小时。

然而问题是当UTC日期翻身时,我没有任何关于当前条款的数据,因为UTC时间现在是00或01小时。

我不确定如何在常规日期处理这个UTC日期的滚动。

1 个答案:

答案 0 :(得分:0)

我认为关键是首先将UTC转换为您当地的时间,以确保您在最初的几天内同步,并避免在当地时间拉动时转换:

SELECT VALUES FROM TABLE1 WHERE TRANTIME BETWEEN
DATEADD(HOUR, 13, CONVERT(DATETIME, CONVERT(DATE, DATEADD(HOUR,-7,GETUTCDATE()))
AND
DATEADD(HOUR, 37, CONVERT(DATETIME, CONVERT(DATE, DATEADD(HOUR,-7,GETUTCDATE()))