2012-02-19 8 views
5

エラースロー:MySQLは:タイムスタンプの値を挿入しようとすると、私はこのコラムを持つテーブルを持っている

last_modified timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

をそして、私はカスタムタイムスタンプを持つ行を挿入することができないように見える、私はこのエラーを取得します:

Incorrect datetime value: '1145868501' for column 'last_modified' at row 1

私は他のテーブルのみDATETIMEので、私は、タイムスタンプを移入するUNIX_TIMESTAMP(CREATION_TIME)を使用しているCREATION_TIMEフィールドを持っていることを、データは別のテーブルから来て、この表を移入しようとしています。

"DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP"というタイムスタンプの列は私自身のものを挿入できないと思いますが、そうですか?はいの場合、それについての公式の文書はどこにありますか、そして最良の解決策は何ですか?最初に単純なタイムスタンプを作成し、データを挿入した後にテーブルを変更しますか?

ありがとうございます!

EDIT:UNIX_TIMESTAMPを使用しないようにアドバイスしているので、最初は使用したくないと言わなければなりませんが、この種のエラーが発生しました。 datetime値が正しくありません: '2010-03 -28 02:15:51 '列' last_modified ' だから私は "本当の"タイムスタンプを挿入しなければならないと思った...

+1

'creation_time'を' UNIX_TIMESTAMP'でラップせずに試しましたか? –

+0

実際にそれは私が最初に試したものですが、それはうまくいきませんでした:-( –

+1

どうしたのですか? –

答えて

1

TIMESTAMP列に値を明示的に挿入することができます。読むためTIMESTAMP Properties

The auto-update TIMESTAMP column, if there is one, is automatically updated to the current timestamp when the value of any other column in the row is changed from its current value. If all other columns are set to their current values, the TIMESTAMP column does not change. Automatic updating does not apply if the TIMESTAMP column is explicitly assigned a value other than NULL.


更新

ヘヘは、エラーが発生した - '2010-03-28 02:15:51'とは日時がなかったよく!これは通常、02:00 - 03:00または03:00 - 04:00の間、月内の日か表示される(夏時間ギャップにあった

を参照してください:。。。Daylight Saving Time説明

+0

良いキャッチ!それを処理するトリックは何ですか? –

+0

これらの日付時刻の保存に使用されたタイムゾーンを知る必要があります。 –

+0

私はこれらの日付を1つずつ修正しなければならないのではないかと恐れています。DBは過去5年間に複数のサーバーでホストされています。とにかく、私はこの問題であまりにも多くの行を持つべきではありません。私を助ける時間を割いた皆様に感謝します! –

1

あなたは日時フィールドに長整数を置くしようとしていることを。仕事UNIX_TIMESTAMP()への呼び出しを削除し、それが動作するはず

MySQLのTIMESTAMPタイプはDATETIMEとほとんど同じですされません。。。それだけでいくつかの余分な自動更新の魔法を持っている限り、SELECTとUPDATEは、それを懸念していますDATETIMEです。

+2

自動更新だけでなく、タイムゾーンマジック(これははるかに重要な機能です) – zerkms

+0

はい。しかし、私の指摘は、それはUnixの整数のタイムスタンプではないということです。 :-) – staticsan

関連する問題