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 UTColmak2038-01-19 03:14:07 UTC
MySQL tarihsaat :
Sakladığınız şey ne elde edeceğiniz ™.
Aralığına sahip 1000-01-01 00:00:00olmak9999-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 DATEve bunlar da aynı şekilde TIMEçalışıyor DATETIME, ama elbette DATEzamanı TIMEumursamı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 DATETIMEyerde kullanmalısınız . Teknik nedenlerden dolayı değil, fakat MySQL'in nasıl çalıştığı konusunda hala belirsiz DATETIMEolduğ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ı .
TIMESTAMPBunun 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, DATETIMEher ş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.