imをphp 5.4.6とMySQL 5.5.29を使用しています。UNIX TIMESTAMPをMYSQL DATETIMEに変換することで問題が発生します。 Mysqlとphp wunは同じローカルマシン上にあります。PHP-MYSQL:UnixタイムスタンプをDateTimeに変換する(逆も同様)
私は)私は(NOW PHPのPDOとMySQLを使用してデータを挿入するには、単純なMySQLのテーブル
CREATE TABLE Entry(
id SERIAL PRIMARY KEY,
created DATETIME NOT NULL);
を持っています。これは正常に動作し、正しい日時はデータベースに格納されます。
私の計画は、クライアント側のUNIXタイムスタンプで作業することです(サーバ側のPHP & mysql)。
私はクライアントにタイムスタンプを渡したいと思います。 したがって、MySql UNIX_TIMESTAMP()関数を使用して、クエリで直接変換します。
だからサンプルクエリは次のようになります。
SELECT created, UNIX_TIMESTAMP(created) AS TS FROM Entry
結果: 作成した= 2013年2月14日夜08時47分35秒 のTS = 1360871255
は、だから今、私がやりたいですそれ以外の方法では、私はUNIXのタイムスタンプを渡し、私のデータベースのエントリと比較したいです。 Unfortunetly私は動作するPHPスクリプトを書くことができません。私はなぜ知らないが、私はPHPに同じタイムスタンプ(1360871255)を通過mのとき、私はこの方法で2013年2月14日夜08時47分35秒を得ることはありません:(
public static function toDateTime($unixTimestamp){
return date("Y-m-d H:m:s", $unixTimestamp);
}
私はtoDateTimeを呼び出します1360871255)は、元のDateTimeではない2013-02-14 20:02:35を返します。
MYSQLで使用するには1360871255をY-m-d H:m:sにフォーマットする必要はありませんが、1360871255は期待した時間ではないようです(MYSQL UNIX_TIMESTAMPが返されました)。
私がやりたいことは、私に特定のタイムスタンプよりも古いエントリを示した単純なクエリである。このような単純なもの:
SELECT * FROM Entry WHERE created < 1360871255
が、私は前に述べたように、クエリの結果が期待されていません1360871255が正しい時刻ではないようだからです。
私はPHPでmysql接続に特別なタイムゾーンを指定しません。
提案がありますか?
くそ、あなたの権利... omg ...私のように愚かな – sockeqwe
@ sockeqwe - あなたは愚かではありません。あなたはちょうどそれを見た。それは起こる。 – Greeso