【问题标题】:mysql unix_timestamp timezone wrong timemysql unix_timestamp 时区时间错误
【发布时间】:2012-07-09 20:14:54
【问题描述】:

mysql 中的 UNIX_TIMESTAMP 函数有问题。

设置: 我正在我的本地 Windows 机器上创建一个 wordpress 站点,并定期将我的更新上传到 ubuntu 服务器(page.ly)。有一段代码可以从 mysql 数据库中检索日期时间列。问题是检索到的时间在我的本地 windows 机器上是正确的,但在 ubuntu 服务器上是错误的。

到目前为止我所知道的 我在这两个地方都运行了几个查询以尝试重现该问题。

$wpdb->get_row("SELECT UNIX_TIMESTAMP('2012-07-27 22:15:00') 
FROM {$wpdb->posts}"))

这会在我的本地机器上产生正确的时间(1343427300),但在 ubuntu 上是错误的(1343445300 提前 5 小时。我的本地时区 America/New_York。)。

$wpdb->get_row("SELECT UNIX_TIMESTAMP('2012-07-27 22:15:00')"))

这会在两台机器上产生正确的时间。就像我将我的选择与一个表、数据库中的任何表相关联时,时间得到时区偏移量 + 夏令时偏移量。我检查了两台机器上的时区偏移量。他们都是0。我有点卡在这里。感谢任何帮助。

【问题讨论】:

    标签: mysql wordpress unix-timestamp


    【解决方案1】:

    http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_unix-timestamp

    UNIX_TIMESTAMP 返回 UTC 时间,这样就解释了您得到的 5 小时差异

    您可能希望在偏移量为 -05.00(东部)的时间上使用 CONVERT_TZ 以获得正确的 TIMESTAMP。

    【讨论】:

    • 有什么理由可以在我的机器上运行,但不能在 ubuntu 上运行吗?
    • 最近有没有在mysql中下载过时区表?一次,你进入 mysql 提示符,输入 mysql> SET time_zone = '+01:00'; 然后运行你的 SELECT UNIX_TIMESTAMP('2012-07-27 22:15:00'); 看看你得到了什么
    • 对我的远程 ubuntu 机器没有影响,但在我的本地 windows 机器上工作。
    • 这行得通,但仍然不知道它在不同机器上的不同时区设置有什么不同。
    • 嗯,除了ubuntu有自己的系统时间,MySQL也有自己的系统时间。而且我认为,我不确定,当您选择 UNIX_TIMESTAMP 时,它是从 MySQL 时区表中获取的。
    猜你喜欢
    • 1970-01-01
    • 2010-12-08
    • 2015-12-25
    • 2021-02-14
    • 1970-01-01
    • 1970-01-01
    • 2013-01-28
    • 2011-04-22
    • 1970-01-01
    相关资源
    最近更新 更多