【发布时间】:2016-11-17 14:49:21
【问题描述】:
关于在使用 Epoch 时间戳的 SQL 中查询数据,我有两个问题。我可以使用以下文本转换 SELECT 语句中的日期:
DATEADD(HOUR, -4, DATEADD(SECOND, aa.fldTimeOfEvent, '1970-01-01 00:00:00'))
我必须使用“小时,-4”将其转换为东部夏令时。我很好奇是否需要在 11 月夏令时结束时将其调整为 -5?有没有办法制定 SELECT 语句,以便它自动调整 DST?这将是自动报告的一部分,恐怕我们可能会错过更改此值。
另一个问题是如何使用 WHERE 语句来获取某一天的数据。例如,如果我希望 WHERE 语句获取今天(2016 年 7 月 14 日)任何时间发生的所有条目,我该怎么做?我试过这个说法:
WHERE DATEADD(HOUR, -4, DATEADD(SECOND, aa.fldTimeOfEvent, '1970-01-01 00:00:00')) = '2016-07-14'
它似乎只抓取恰好等于当天午夜的条目(我认为)。我想要一天中任何时间出现的所有条目。
提前感谢您的帮助。
【问题讨论】:
-
您可以使用 GetUTCDate() 来计算当前偏移量,而不是对其进行硬编码。
SELECT DATEDIFF(hour,GetUTCDate(),GETDATE())--假设是 SQL Server -
您使用的是 SQL Server 吗?如果是这样,请将此标签添加到您的问题中。
-
您可能必须 create a custom function 处理夏令时。
-
抱歉信息不足。我的 SQL 不是很好。服务连接似乎显示我正在使用 SQL Server。我会将此标签添加到问题中。此外,我将尝试使用您的一些建议并报告我的发现。在我了解它的工作原理之前,我可能需要先玩一下它。
标签: sql sql-server datetime epoch