【问题标题】:Best way to get unix timestamp for current UTC time in MySQL在 MySQL 中获取当前 UTC 时间的 unix 时间戳的最佳方法
【发布时间】:2013-07-20 01:23:00
【问题描述】:

我一直在尝试在 mySQL 中使用以下内容为当前 UTC 时间创建一个 unix 戳

UNIX_TIMESTAMP(UTC_TIMESTAMP())

当我执行查询并获得结果时,似乎 mySQL 正在执行两次 UTC 对话。

Eg. local time 9:07PM

上面的查询返回: 1374390482,就是第二天07:08:02 GMT,没错,

但是,UNIX_TIMESTAMP(LOCALTIMESTAMP()) 返回:

1374372551 02:09:11 GMT

这是正确的 UTC unix 时间戳。

所以UNIX_TIMESTAMP 会自动将日期对象的时区转换为 UTC(不管它是否已经是 UTC?)

有没有更好的方法或单个命令来获取 mySQL 中的 UTC unix 时间戳?

【问题讨论】:

    标签: mysql mysql-workbench


    【解决方案1】:

    【讨论】:

    • 非常感谢,我刚刚试了一下,我认为这正是我所需要的。
    • UNIX_TIMESTAMP() 是否返回 UTC 或本地时区的时间戳?
    • @JoSmo 实际上 Unix 时间戳没有固有时区。这是一种时间符号,专门设计为 受时区、夏令时和时钟划分等概念的约束。它是一个非常简单的数字:自可称为“1970-01-01 00:00:00”UTC(即 Unix 时间 0)的时刻以来的秒数(或毫秒)。但是 Unix 时间本身不是 UTC,它超越了时区本身的概念。无论您在哪个时区,当前的 Unix 时间对您、不同时区的人以及整个宇宙都是完全相同的。
    • 我已经习惯了 UNIX 时间戳,现在切换到 DateTime 对象。我将 DateTime 对象存储在 MySQL 中。我花了一段时间才明白 DateTime 对象的时区没有存储在数据库中。我必须在旁边跟踪它。当我将 DateTime 数据读回到另一个页面时,这个页面只是假设它是 UTC !!!所以我不得不用 date_default_timezone_set('America/Denver'); 开始页面。 (我使用 GoDaddy 服务器。)我更喜欢 UNIX 时间戳的概念。它们独立于时区。
    • 据我了解,无论服务器的时区如何,UNIX_TIMESTAMP() 都将始终相同。那是我以前用过的。但在上面的示例中,它与参数 UNIX_TIMESTAMP(date) 一起使用,在这种情况下,服务器时区将用于解释参数 date。
    猜你喜欢
    • 2012-03-04
    • 2012-11-11
    • 2017-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-21
    • 1970-01-01
    相关资源
    最近更新 更多