【问题标题】:Convert MySQL UTC datetime to UNIX timestamp将 MySQL UTC 日期时间转换为 UNIX 时间戳
【发布时间】:2010-12-28 19:21:39
【问题描述】:

这些都正确返回当前的 UNIX 时间戳:

SELECT UNIX_TIMESTAMP(LOCALTIMESTAMP()); #MySql
echo time(); //PHP

但我将 UTC_TIMESTAMP 存储在我的数据库中(不是 LOCALTIMESTAMP)。

如何使用 MySQL 将 UTC 日期时间转换为 UNIX 时间戳?

【问题讨论】:

    标签: php mysql datetime unix-timestamp


    【解决方案1】:

    请注意,LOCALTIMESTAMP() 是 NOW() 的同义词。因此,您真正要问的是如何获取当前时间并将其转换为 GMT,然后转换为 unix 时间戳以存储在数据库中。所以这会起作用:

    SELECT UNIX_TIMESTAMP(CONVERT_TZ(NOW(), @@global.time_zone, 'GMT'));
    

    顺便说一句,使用数据库的时间和日期列总是比使用 unix 时间戳要好得多。它使查询和显示结果变得更加容易。

    更新:你确定你得到了你认为的那样吗? UNIX_TIMESTAMP returns a UTC based seconds since the UNIX epoch。它不返回MySQL DateTime type。如果您有一个实际的 UTC DateTime 实例,那么您可以将其直接放入数据库的 DateTime 列中,而不必使用 UNIX_TIMESTAMP 作为中介。您实际上拥有的是当地时间的哪种类型?

    【讨论】:

    • 我没有在我的表中存储时间戳。 UNIX_TIMESTAMP() 返回一个日期时间,我将其存储在表的日期时间列中。我想知道如何从我的 utc 日期时间获取 unix 时间戳。
    • 根本不反对,但是数据库中的纪元时间戳已经为我工作过的许多模式解决了许多日期算术和管理问题。我不一定会回避他们。
    猜你喜欢
    • 2011-06-20
    • 2014-05-06
    • 2020-10-19
    • 1970-01-01
    • 1970-01-01
    • 2015-02-09
    • 1970-01-01
    • 2021-10-06
    • 1970-01-01
    相关资源
    最近更新 更多