我有两个关于在SQL中查询使用Epoch时间戳的数据的问题。我可以使用以下文本在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'
它似乎只抓取完全等于当天午夜的条目(我认为)。我想要一天中任何时间发生的所有条目。
提前感谢您的帮助。
答案 0 :(得分:0)
我假设你正在使用SQL Server。如果您只需要当前偏移量,则可以使用GETUTCDATE()
来计算它:
SELECT DATEDIFF(hour,GetUTCDate(),GETDATE())
如果您需要计算其他日期的偏移量,您可能希望使用CLR函数:https://dba.stackexchange.com/questions/28187/how-can-i-get-the-correct-offset-between-utc-and-local-times-for-a-date-that-is
答案 1 :(得分:0)
首先是简单的部分:
如果您只需要比较日期,请在比较之前将日期时间转换为日期:CONVERT(date,yourdatefield)
第二部分已在此讨论并解决了UTC时间:Convert Datetime column from UTC to local time in select statement。您仍然需要为Epochtime添加偏移量。