php5.4.6とMySQL5.5.29を使用しているのですが、UNIXTIMESTAMPをMYSQLDATETIMEに、またはその逆に変換すると問題が発生します。Mysqlとphpは同じローカルマシンで実行されます。
私は単純なmysqlテーブルを持っています
CREATE TABLE Entry(
id SERIAL PRIMARY KEY,
created DATETIME NOT NULL);
データを挿入するには、phpPDOとmysqlNOW()を使用します。これは正常に機能し、正しい日時がデータベースに保存されます。
私の計画は、クライアント側でUNIXタイムスタンプ(サーバー側でphpとmysql)を使用することです。
そこで、UNIXタイムスタンプをクライアントに配信したいと思います。したがって、MySql UNIX_TIMESTAMP()関数を使用して、クエリで直接変換します。
したがって、サンプルクエリは次のようになります。
SELECT created, UNIX_TIMESTAMP(created) AS TS FROM Entry
結果:作成済み= 2013-02-14 20:47:35 TS = 1360871255
それで、今は別の方法でやりたいと思います。UNIXタイムスタンプを渡し、それをデータベースのエントリと比較したいと思います。残念ながら、動作するPHPスクリプトを作成できません。理由はわかりませんが、同じタイムスタンプ(1360871255)をPHPに渡すと、次のメソッドで2013-02-1420:47:35を取得できません。
public static function toDateTime($unixTimestamp){
return date("Y-m-d H:m:s", $unixTimestamp);
}
toDateTime(1360871255)を呼び出すと、元のDateTimeではない2013-02-1420:02:35が返されます。
MYSQLで使用するために1360871255をYmdH:m:sにフォーマットする必要はありませんが、1360871255は私が期待した時間ではないようです(そしてMYSQL UNIX_TIMESTAMPが戻ってきました)。
私がやりたいのは、特定のタイムスタンプより古いエントリを表示する単純なクエリです。次のような単純なものです。
SELECT * FROM Entry WHERE created < 1360871255
ただし、前述したように、1360871255は正しい時刻ではないように思われるため、クエリ結果は予期されていません。
phpでmysql接続に特別なタイムゾーンを指定していません。
助言がありますか?