2013-08-06 4 views
20

私は、次の2つのメソッドを使用してMySQLのタイムスタンプフィールドにフォーマットされた日付と時刻の文字列を挿入しようとしていますが、両方は私が最初のものは、私のように動作するはずと信じ0時00分00秒mysqlタイムスタンプフィールドにカスタム日付を挿入するには?

INSERT INTO test VALUES (UNIX_TIMESTAMP('2013-08-05 18:19:03')) 
INSERT INTO test VALUES (UNIX_TIMESTAMP(STR_TO_DATE('2013-08-05 18:19:03', '%Y-%m-%d %H:%i:%s'))) 

0000-00-00私を示してい期待していますが、なぜ日時を解析していないのですか?

+0

mysqlの下で 'SELECT 'を実行することでわかるように、 'UNIX_TIMESTAMP'の使い方には何も問題はありません。あなたのテーブルには複数の列がありますか?あるいは、カラムのデータ型がint以外のもの(おそらく 'UNIX_TIMESTAMP'が返すものなので)でしょうか? – GreatBigBore

+0

'INSERT'文をmysqlに入力して、どのように応答するのかを確認してください。 – GreatBigBore

+0

@GreatBigBore私のフィールドはタイムスタンプです。日付と時刻の列ではなく、1つの列しかありません。 – Maximus

答えて

24

問題はフィールドがTIMESTAMPと定義されていますが、UNIX_TIMESTAMPはintを返します。代わりにINSERT INTO test VALUES ('2013-08-05 18:19:03')を使用してください。

+0

うまくいきました!ありがとう。私はなぜstrtotime php関数はうまく動作しますが、mysqlクエリーではUNIX_TIMESTAMPではないのでしょうか?私がunix_timestampの値を日付関数に渡すと、43年前の日付が表示されます。 – Maximus

+0

これはおそらく、使用しているPHP関数が 'UNIX_TIMESTAMP'によって返されたint以外の何かを期待しているからでしょう。ドキュメンテーションを慎重にチェックすると、おそらく問題が見つかるでしょう。 – GreatBigBore

関連する問題