MySQL zaman damgaları :
UTC'de saklanır
Depolama sırasında UTC'ye dönüştürülürler ve alımda zaman diliminize geri dönüştürülürler. Eğer varsa , saat dilimi ayarlarını değiştirmek , alınan değerler de değişir.
Otomatik olarak başlatılabilir ve güncellenebilir
Varsayılan değerlerini ve / veya otomatik güncelleme değerlerini CURRENT_TIMESTAMP
Aralığına sahip 1970-01-01 00:00:01 UTC
olmak2038-01-19 03:14:07 UTC
MySQL tarihsaat :
Sakladığınız şey ne elde edeceğiniz ™.
Aralığına sahip 1000-01-01 00:00:00
olmak9999-12-31 23:59:59
Aralığın dışındaki değerler işe yarayabilir - ancak yalnızca aralığın içindeki değerlerin çalışması garanti edilir.
Gün veya ayın sıfır olduğu tarihleri saklayabilirsiniz.
Bu MySQL'in doğum günlerini saklama şeklidir! Bunu a ile yapamazsınız TIMESTAMP
, bunun tek istisnası sıfır değeridir 0000-00-00
.
Gerekirse geçersiz tarihleri ALLOW_INVALID_DATES modunda saklayabilirsiniz .
NOW()
Bazı durumlarda varsayılan değeri ayarlayabilirsiniz , ancak otomatik olarak başlatılan ve güncellenen tarihlerin tercih edilen ve daha doğal yolu budur TIMESTAMP
.
Tabii ki aynı zamanda var DATE
ve bunlar da aynı şekilde TIME
çalışıyor DATETIME
, ama elbette DATE
zamanı TIME
umursamıyor ve tarihi umursamıyor. Dört veri türü de, çeşitli tarih ve saat işlevleriyle mükemmel çalışır , ancak veri türlerini karıştırırken dönüştürme etkilerinin farkında olmalısınız .
Şimdi, sorunuza: Her DATETIME
yerde kullanmalısınız . Teknik nedenlerden dolayı değil, fakat MySQL'in nasıl çalıştığı konusunda hala belirsiz DATETIME
olduğunuz için, daha basit bir seçimdir. Bu, PHP'yi kaydetmeden önce mevcut zaman damgasını hesaplamak zorunda kalacağınız anlamına gelir, bu kadar kolay:
$mysqldate = date("Y-m-d H:i:s");
PHP'nin tarih işlevi şöyle çalışır:
string date ( string $format [, int $timestamp = time() ] )
"Y-m-d H:i:s"
Biçimi MySQL ile ve ikinci parametre boş bırakarak uyumlu biridir date()
aramaları time()
güncel olsun UNIX zaman damgası .
TIMESTAMP
Bunun yerine kullanmak DATETIME
, geçerli zaman damgasına karar verme sorumluluğunu üstlenen MySQL'in katma değerine sahiptir ve eklerken / güncellerken alanı atlayabilirsiniz. Ancak zaten bir sorgu gönderiyorsanız ve PHP'deki geçerli zaman damgasını almak için gereken kod en az düzeyde olduğundan, DATETIME
her şey için güvenle gidebilirsiniz .
PHP zaman damgasını veritabanında saklamak için gerçek kod olarak, PHP Data Objects'e bakmalı ve hala belirsizseniz, bunun yerine StackOverflow'a sormalısınız . Fakat zaten 1.5k ile ilgili sorular zaten var, sormadan önce bunlara göz attığınızdan emin olun. Sadece bir ipucu, hazırlanmış ifadeler , havalı çocukların nasıl yaptıklarıdır.