Zaman damgasını depolamak için MySQL'de büyük bir tamsayı mı yoksa düzenli bir tam sayı mı kullanmalıyım? INT türünde bir INT'de depolamayı planlıyorum, zaman damgasında veya tarihte değil, hangi INT tipini kullanmalıyım?Bir zaman damgasını depolamak için MySQL'de büyük bir INT veya normal INT kullanmalı mıyım?
cevap
Int için ters dönecek :-) kurtarmak alacağınızı ediyorum devlet olmadığından 2038'de bir negatif (UNIX zaman damgası kullanıyorsanız): http://en.wikipedia.org/wiki/2038_problem.
yüzden BIGINT ben tamamen size ne yapmak istediğinize bağlıdır düşünüyorum muhtemelen en güvenli seçenek
Artık bir y2k38 problemi olmayacak bir y2k38 problemi olmayacak. 2030 civarı bir yerde, 64-bit zaman damgalarını kullanmak için tüm veritabanlarını değiştirmeye başlayan çılgın bir acele olacak ve bu en azından, tamsayılar yerine tablolarda akıllıca zaman çizelgesi kullanan kişiler için kolay olacak :-) – paxdiablo
* shrug * ... Eğer imzasız bir int yaparsanız, 2100'e ve bazılarına kadar çıkabilirsiniz (sayıları vermeyi sürdüren bir işleviniz varsa ve bunları dönüştürdüğünüz sürece) –
Eh. Veritabanları ile çalışmak için bigint kullanan akıllı insanlar var (veri tabanları veritabanları veri tabanı + pazarlama için değil), veri tabanları ile datetime formatları veya herhangi bir veritabanının sürümleri ile taşınabilirlik ve sorunlar. Int Int'dir. ve Oracle, SQL, MySQL, MariaDb ve diğerleri ile sorun değil. Datatimes türleri, çeşitli veritabanları güncellemeleri, conpatibilties ile google arama çok fazla sorun .. Mucha veces no es cuestion de inteligencia, es cuestion de experiencia ;-) Çoğu zaman bir zeka meselesi değildir, bir deneyim meselesidir ;-) – abkrim
DBMS zaman damgası verisi için en iyi duruma getireceği için büyük olasılıkla bir zaman damgası içinde saklamalısınız.
MySQL geliştiricilerinin, zaman damgalarının gerektiği gibi çalıştığını ve bunu kesinlikle işe yaramayacak bir şeyle değiştirmesini sağladıkları tüm zor işleri neden feda edeceğinizi merak ediyorum.
Eğer bir tamsayı neden kullanmak istediğinizi, ben sadece geçici delilik olduğunu varsaymak gidiyor ve yakında
Genellikle, php ve diğer bu tür diller, düzgün bir sql tarih biçimiyle olduğundan daha fazla zaman damgalarıyla çalışmayı kolaylaştırdığından kullanılırlar. –
Bu durumda, DB'de olanın altında yatan time_t değerini almak için UNIX_TIMESTAMP() öğesini kullanırdım. – paxdiablo
Benim durumumda sadece çalışır, mysql yeni sürümleri hem datetime ve zaman damgası bu formatta şimdi 0000000 yerine 0000-00-00 (sayı ve tire kapalı olabilir ama fikir alırsınız. Zaman damgası gerçek bir zaman damgası olarak kullanılır. ama benim zaman fonksiyonlarının hepsi mysql'den gerçek bir zaman damgasına ihtiyaç duyar, bu yüzden bir INT'de bir zaman damgasını saklarsam daha az yer kullanır ve daha az işleme/geri dönüş yapar.Söylediğim gibi, tüm işlevlerim bir zaman damgasına ihtiyaç duyar, bu yüzden daha yeni stil zaman damgasını verirsek, bunu php'de gerçek bir zaman damgasına dönüştürmem gerekir. – JasonDavis
olduğunu. Orada zaman/tarih türleri için birkaç uygun türleri (bkz: http://dev.mysql.com/doc/refman/5.0/en/date-and-time-type-overview.html)
DATE
- genellikle 3 byte, aralık:1000-01-01
9999-12-31
için.DATETIME
-8 bayt, aralık1000-01-01 00:00:00
TIMESTAMP
9999-12-31 23:59:59
göre - 4 bayt1970-01-01 00:00:01
UTC UTC2038-01-19 03:14:07
arasında değişir. Ardından, bilinmesi gereken bazı anlamsal sorunlar vardır:
- tarih saklar takvim günü, datetime (int TIMESTAMP gibi 4 bayt, büyük tamsayı DATETIME gibi 8 bayt) ve her iki mağaza damgası ikinci bir hassasiyette tarih + saati (tarih-ikincisi, tarih aritmetiğinde desteklenir, ancak depolama için desteklenmez)
- zaman damgası bir UTC değerini depolar. Yani, orada yapıştırdığınız herhangi bir değer, oturumun saat diliminden (varsayılan olarak sunucunun saat dilimi) UTC'ye dönüştürülür ve saklanır. Alımda, UTC değeri tekrar oturumda geçerli olan zaman dilimi geri dönüştürülür.
- zaman damgası, ekleme veya güncelleştirme veya her ikisi de geçerli zaman damgasını otomatik olarak almak için bildirilebilir. Ben DÜZGÜN MySQL ve PHP kullanıcılar için saat dilimleri yapmak için net geçerli bir öğretici olsaydı
- 1. Javascript için getHours() veya getUTCHours kullanmalı mıyım?
- 2. Miras veya kompozisyon kullanmalı mıyım?
- 3. C'deki unix zaman damgasını int cinsinden nasıl alabilirim?
- 4. Int olarak zaman al
- 5. zaman bir intval kullanmalı ve zaman int daha iyi bir seçenek nedir
- 6. Bir Backround çalışanı kullanmalı mıyım veya kendi thread'ımı yazmalıyım
- 7. Her tablo için bir CursorAdapter kullanmalı mıyım?
- 8. Bir Kullanıcı Denetimi için IDisposable kullanmalı mıyım?
- 9. Bu durumda Kalıtım veya Kompozisyon kullanmalı mıyım?
- 10. Normal İfade: Dosya Adından Zaman Damgasını Kaldırma
- 11. Bu gibi constexpr kullanmalı mıyım?
- 12. ApplyUpdates (0) veya ApplyUpdates (-1) kullanmalı mıyım?
- 13. joda yeni DateTime (int, int, int, int, int, int) weblogic 11g ile
- 14. WCF bir int dönmeyecek
- 15. @ İmleci veya manifest dosyalarını kullanmalı mıyım?
- 16. Bu sınıfta kullanmalı mıyım?
- 17. Int nasıl dönüştürülür? int
- 18. Laravel'de belongsTo veya hasOne kullanmalı mıyım?
- 19. int ve imzasız int
- 20. Bir int dizisini
- 21. Performans: Bir değişkeni başlatmalı mıyım yoksa 'bunu kullanmalı mıyım?
- 22. Bir std :: set <int> en büyük int nasıl bulabilirim?
- 23. Zaman dilimi ile zaman damgasını angular.js'de normal tarihe nasıl yazdırılır?
- 24. Int * p uzun int * p olmalı?
- 25. Saklı yordamı çalıştırmak için sp_executesql veya EXEC kullanmalı mıyım?
- 26. Android'de ImageCache'de saklamak için Bitmap veya Drawable kullanmalı mıyım?
- 27. Her bir POST isteğinde ValidateAntiForgeryToken kullanmalı mıyım?
- 28. Değişkende bir kabuk sonucu Int
- 29. Bir Enum bir int nasıl?
- 30. javascript int dizgisi int dizilimi
(http://dev.mysql.com/doc/refman/5.1/en/timestamp.html bakınız) en iyi detaylar için kılavuzu incelemek, tüm bilgi şimdi mysql değişti modası geçmiş görünüyor zaman damgası alanlarının biçimi, datetime ile tam olarak aynı olacak – JasonDavis