SQL Epoch Time“Where”语句

时间:2016-07-14 15:31:59

标签: sql sql-server datetime epoch

我有两个关于在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'

它似乎只抓取完全等于当天午夜的条目(我认为)。我想要一天中任何时间发生的所有条目。

提前感谢您的帮助。

2 个答案:

答案 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

链接到:https://blogs.msdn.microsoft.com/sqlserverfaq/2011/07/29/how-to-convert-utc-time-to-local-time-in-sql/

答案 1 :(得分:0)

首先是简单的部分:

如果您只需要比较日期,请在比较之前将日期时间转换为日期:CONVERT(date,yourdatefield)

第二部分已在此讨论并解决了UTC时间:Convert Datetime column from UTC to local time in select statement。您仍然需要为Epochtime添加偏移量。