2012-02-19 23 views
5

bir hata atar:MySQL: bir zaman damgası bir değer eklemek için çalışılıyor Ben bu sütunda bir tablo var

last_modified timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

Ve özel bir zaman damgası ile bir satır eklemek olamaz gibi görünüyor, bu hatayı alıyorum : veri başka bir masaya gelen bu tablo doldurmak çalışıyorum

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

, diğer tablo sadece DATETIME olan bir CREATION_TIME alanı vardır bu yüzden zaman damgası doldurmak için UNIX_TIMESTAMP (CREATION_TIME) kullanın.

"DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP" olan zaman damgası sütunu, kendi ürünlerimi eklememi engelliyor, bence doğru muyum? Evet ise resmi doktor nerede ve en iyi çözüm nedir? Önce basit bir zaman damgası oluşturmak, daha sonra verileri ekledikten sonra tabloyu değiştirmek?

Teşekkürler!

DÜZENLEME: insanlar UNIX_TIMESTAMP kullanmama konusunda tavsiyede bulunduklarından, bunu başlangıçta kullanmak istemediğimi söylemeliyim, ancak bu tür bir hataya sahibim: Yanlış tarih değeri: '2010-03 -28 02:15:51 '' last_modified '' sütununda ' ' Bu yüzden "gerçek" zaman damgasını eklemek zorunda kaldım ...

+1

'UNIX_TIMESTAMP' ile' creation_time' sarmadan çalıştı mı? –

+0

Aslında ilk önce denedim, işe yaramadı :-( –

+1

Ne oldu? Nasıl çalıştı? –

cevap

1

TIMESTAMP sütununa açık bir değer ekleyebilirsiniz. Oku: çünkü 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.


Güncelleme

Hehe, hata oluşur - '2010-03-28 02:15:51' ile hiçbir datetime yoktu Şey-! Bu genellikle 02:00 - 03:00 veya 03:00 - 04:00 arasında, Mart ayında bir gün göründüğü (yaz saati boşluğu oldu

Bkz:... Daylight Saving Time açıklama

+0

İyi yakalama! Bunu halletmenin yolu ne olurdu? –

+0

Bu süreleri saklamak için hangi saat dilimini kullandığınızı bilmeniz gerekir. –

+0

Korkarım ki bu tarihleri ​​tek tek tamir etmeliyim, DB son 5 yıldır çeşitli sunucularda barındırılıyor.Her neyse, bu problemle çok fazla satır olmamalı. Bana yardım etmek için zaman alan herkese teşekkürler! –

1

Bir datetime alanına doğru çok uzun tamsayı koymaya çalışıyoruz Yani . çalışmak UNIX_TIMESTAMP() çağrısı çıkarın ve çalışması gerekir

MySQL TIMESTAMP tip bir DATETIME hemen hemen aynıdır değildir,.. sadece bazı ekstra otomatik güncelleme sihirli vardır Bildiğim kadarıyla SEÇ ve gÜNCELLEME, bunu söz konusu DATETIME.

+2

Sadece otomatik güncelleme değil, saat dilimi büyüsü (çok daha önemli bir özellik) – zerkms

+0

Evet. Ama benim amacım Unix tamsayı zaman damgası olmaması. :-) – staticsan

İlgili konular