我正在尝试从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日期的滚动。
答案 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()))