在mysql中遇到UNIX_TIMESTAMP函数问题。
设置: 我正在我的本地Windows机器上做一个wordpress站点,并定期将我的更新上传到ubuntu服务器(page.ly)。有一段代码可以从mysql db中检索datetime列。问题是在我的本地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.我有点卡在这里。感谢任何帮助。
答案 0 :(得分:5)
http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_unix-timestamp
UNIX_TIMESTAMP返回UTC时间,因此解释了您获得的5小时差异
您可能希望在时间上使用CONVERT_TZ,偏移量为-05.00(东方),以获得正确的TIMESTAMP。