2011-02-02 28 views
24

mysql, oluşturulduğu zaman bir kayıt satırında zaman damgasını otomatik olarak kaydedebilmenin bir yolu var mı? Geçerli değer olarak current_timestamp ile zaman damgası (veri türü) kullanmaya çalışıyordum ama daha sonra kayıt her güncellendiğinde bu durumun güncelleneceğini fark ettim. Oluşturma zaman damgasını depolayacak bir şeye ihtiyacım var.mysql, kayıt oluşturma zaman damgasını otomatik olarak kaydeder

ALTER TABLE your_table 
ALTER COLUMN date_column SET DEFAULT CURRENT_TIMESTAMP 

Eğer date_column için bir değer belirtin sürece, varsayılan olacaktır: ALTER TABLE statement kullanmak, varolan tabloda için

CREATE TABLE ... 
    your_date_column DATETIME DEFAULT CURRENT_TIMESTAMP 
    ... 

:

Teşekkür

cevap

55

DEFAULT constraint to use CURRENT_TIMESTAMP Set INSERT deyimi & tarihini çalıştı. NULL ve DEFAULT veya varsayılan kısıtlamayı kullanmak için geçerli değerler, aksi halde sütunun geçersiz olduğu varsayılır.

+0

THanks OMG, ama bunu denedim. Bu zaman damgası, kayıt her güncellendiğinde güncellenmez mi? –

+9

@gaurav: Hayır. "ON UPDATE" deyimini ek olarak belirtirseniz, sütun UPDATE tarihinde güncellenir - aksi halde, bir UPDATE içinde farklı bir değer belirtmediğiniz varsayılarak ... sütuna karşı ifade. –

+0

Tamam Bunu temizlediğiniz için teşekkürler. Takdir! –

3

Sen https://dev.mysql.com/doc/refman/5.0/en/timestamp-initialization.html de MySQL damgaları üzerinde tüm detayları alabilirsiniz.

Dikkat etmeniz gereken nokta, bir zaman damgası sütununu DEFAULT CURRENT_TIMESTAMP maddesi olarak tanımlar ve ON UPDATE yan tümcesi yoksa, sütunun geçerli zaman damgası varsayılan değerine sahip olması, ancak otomatik olarak güncelleştirilmemesidir.

Ancak uyarınız. Yapılması gereken en önemli şey, biri zaman oluşturma süresi ve diğeri son güncelleme zamanı olmak üzere iki zaman damgası sütununa sahip olmaktır. Ne yazık ki, MySQL'in bunu desteklemediği belgelenmiş bir MySQL sınırlamasıdır. MySQL'in neden bu kadar garip bir sınırlaması olduğuna dair hiçbir fikrim yok - başka bir büyük veritabanı bu yaygın kullanım durumunda sorun yaşamıyor.

+0

Bu kısıtlama 2014 http Nisan ayında MySQL sürümünde 5.6.5 ile kaldırılmıştır://dev.mysql.com/doc/relnotes/mysql/5.6/en/news-5-6-5.html –

1

FYI = "Tarih", tarih ve saat olarak belirlenmiştir. "Zaman damgası", değişken tarih ve saattir - sistem saati.

Yani, iki sütun var. Bir Oluştur Col, Bir Güncelleştirme Col.

-2

SELECT * FROM testi WHERE zaman damgası> = CURDATE() VE zaman damgası < CURDATE() + INTERVAL 1 GÜN SİSTEMİ zaman damgasıyla;

0

aşağıdaki komutu bir merhaba tablo şimdiki zamanla
1. id tamsayı
2. create_at yaratacaktır.

create table hello (id int, created_at datetime DEFAULT CURRENT_TIMESTAMP); 
İlgili konular