2

mysqlのUNIX_TIMESTAMP関数に問題があります。

セットアップ: ローカルのWindowsマシンでワードプレスサイトを実行しており、更新をubuntuサーバー(page.ly)に定期的にアップロードしています。mysqlデータベースから日時列を取得するコードがあります。問題は、取得した時間が私のローカルWindowsマシンでは正しいが、ubuntuサーバーでは間違っていることです。

私がこれまで に知っていることは、問題を再現するために両方の場所でいくつかのクエリを実行しました。

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

これにより、ローカルマシン(1343427300)は正しい時刻になりますが、ubuntu(13434453005時間先。ローカルタイムゾーンAmerica/ New_York)では正しくありません。

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

これにより、両方のマシンで適切な時間が生成されます。これは、selectをテーブル、データベース内の任意のテーブルに関連付けるとすぐに、タイムゾーンオフセット+夏時間オフセットを取得するようなものです。両方のマシンでタイムゾーンオフセットを確認しました。どちらも0です。ちょっとここで立ち往生しています。助けてくれてありがとう。

4

1 に答える 1

6

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を使用することをお勧めします。

于 2012-07-09T21:11:19.627 に答える