【问题标题】:SQL Epoch Time "Where" StatementSQL 纪元时间“Where”语句
【发布时间】: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


【解决方案1】:

首先是简单的部分:

如果您只需要比较日期,请将您的日期时间转换为日期,然后再进行比较:CONVERT(date, yourdatefield)

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

【讨论】:

  • 我能够让 GetUTCDate 函数工作以适应 DST。我不知道如何让 CONVERT 函数运行。当我运行 CONVERT(date, 'Time of Event') = '2016-07-11' 时,它不断给我错误消息“转换日期和/或时间时转换失败”有什么想法吗?另外,知道我会用什么来自动让它使用昨天的日期而不是硬编码吗?
  • 你能粘贴实际的消息吗?
  • 我终于让它工作了。我认为它不喜欢我将我命名为“事件时间”的列称为输入。我不得不在 WHERE 语句中使用 SELECT 语句的整个时间转换。以下是 WHERE 语句和 SELECT 语句的最终结果。 SELECT DATEADD(hour,DATEDIFF(hour,GetUTCDate(),GETDATE()),DATEADD(SECOND,a​​a.fldTimeOfEvent,'1970-01-01 00:00:00')) DATEADD(dd,0,DATEDIFF(dd, 0,DATEADD(小时,DATEDIFF(小时,GetUTCDate(),GETDATE()),DATEADD(SECOND,a​​a.fldTimeOfEvent,'1970-01-01 00:00:00')))) = CONVERT(日期,GETDATE( ))
【解决方案2】:

我假设您使用的是 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/

【讨论】:

    猜你喜欢
    • 2013-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-10
    • 2021-03-03
    • 1970-01-01
    • 2022-01-14
    相关资源
    最近更新 更多