6 Şubat 2022 Pazar

Sütun Tipleri - TIMESTAMP - UTC Olarak Saklar

TIMESTAMP WITH TIME ZONE
MySQL TIMESTAMP WITH TIME ZONE diye bir sütun tipi desteklemez. Sadece TIMESTAMP  sütun tipi vardır

TIMESTAMP 
Açıklaması şöyle. Burada TIMESTAMP'in alabileceği en küçük değerin '1970-01-01 00:00:00' olmadığına dikkat etmek lazım. Yani 1970'ten sonra 1 saniye lazım
The TIMESTAMP data type has a range of '1970-01-01 00:00:01' UTC to '2038-01-09 03:14:07' UTC. It has varying properties, depending on the MySQL version and the SQL mode the server is running in.
Açıklaması şöyle. Yani TIMESTAMP YYYY-MM-DD hh:mm:ss[.fraction] şeklindedir. 
The TIMESTAMP data type is used for values that contain both date and time parts. TIMESTAMP has a range of '1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' UTC.
SQL
Örnek
Şöyle yaparız
CREATE TABLE test (
  ts TIMESTAMP CURRENT_TIMESTAMP -- optional
);

INSERT INTO test (ts) VALUES('2020-07-19 18:09:33');
INSERT INTO test (ts) VALUES('2020-07-19');
TIMESTAMP  Okunurken Time Zone'a Göre Çevrilir
Saat Dilimini kontrol etmek için 
1. Düz SQL için Veri tabanının time_zone değişkeni kullanılabilir. TIMESTAMP ve time_zone İlişkisi yazısına taşıdım
2. JDBC için açıklamaları Sütun Tipleri - TIMESTAMP ve JDBC yazısına taşıdım


java.sql.TimeStamp
Sanırım şöyle çalışıyor. TimeStamp nesnesi string'e çevriliyor ve öyle kaydediliyor. String'e çevirirken iki tane ayar devreye girer
1. Bağlantı string'inde verilen saat dilimi. 
2. Eğer Bağlantı string'inde saat dilimi verilmemişse JVM saat dilimi kullanılır

Varsayılan Değerler
TIMESTAMP ve time_zone İlişkisi yazısına taşıdım

Hiç yorum yok:

Yorum Gönder

CREATE EVENT - Scheduled Task İçindir

Örnek Şöyle yaparız CREATE EVENT myevent     ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR     DO       UPDATE myschema.mytable SET myc...