MySQL (InnoDB) DB'mizdeki bazı TIMESTAMP alanlarını INT'ye dönüştürmem gerekiyor. Bir TIMESTAMP'ı INT'ye dönüştürmenin sıra dışı olduğunu, ancak yine de bunu yapmamız gerektiğini anlıyorum.Mysql TIMESTAMP - INTEGER - zaman dilimleri
Yapacak kadar ileri görünüyor, ancak bazı saat dilimi ve gün ışığından yararlanma hataları var.
Sütun başına SQL kodumu üreten bir komut dosyası var. Örneğin, oluşturur:
ALTER TABLE alarmLog ADD COLUMN started_tmp INT UNSIGNED;
UPDATE alarmLog SET started_tmp = UNIX_TIMESTAMP(started);
ALTER TABLE alarmLog DROP started;
alter TABLE alarmLog CHANGE started_tmp started INT UNSIGNED NULL DEFAULT 0;
önce ve, sonuç iyi görünüyor select FROM_UNIXTIME(1291788036);
kullanarak veri sonra karşılaştırırsanız. Buradaki fikir, tüm istemci tarafı yazılımlarını UTC'ye dönüştürmek ve depolarken bu INT'yi kullanmaktır. Alınırken, bu INT geçerli saat dilimine dönüştürülür. Bu senaryo hakkında
Ama sonra docs warn me (CET içerisindeki Gün ışığından):
mysql> SELECT UNIX_TIMESTAMP('2005-03-27 02:00:00');
+---------------------------------------+
| UNIX_TIMESTAMP('2005-03-27 02:00:00') |
+---------------------------------------+
| 1111885200 |
+---------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT UNIX_TIMESTAMP('2005-03-27 03:00:00');
+---------------------------------------+
| UNIX_TIMESTAMP('2005-03-27 03:00:00') |
+---------------------------------------+
| 1111885200 |
+---------------------------------------+
1 row in set (0.00 sec)
nasıl API ve işletim sistemleri normalde Gün ışığından ile anlaşma yapmak? Bilgisayarımın UTC'de ve yaz saatinde saati olduğunu biliyorum, OS buna iki saat ve kış aylarında bir tane ekler. DST olup olmadığını belirlemek için UTC zamanını kullandığını farz ediyorum.
Peki, bununla nasıl baş edebilirim? DST sapmasını belirtmek için veritabanına bir alan eklemek için tek çözüm mü?
Yaz saati farklı bir saat dilimidir. Örneğin. CET Orta Avrupa Saati, CEST Orta Avrupa Yaz Saati. İşletim sisteminiz ne zaman değiştirileceğini biliyor. Zaman damgaları için UTC kullandığınız sürece, bunu yerel zamana dönüştürmek için sunum katmanına kalmıştır. –