Giriş
Açıklaması şöyle
Instead of changing the OS time zone so it is loaded at MySQL start time (which in turn initializes @@system_time_zone), it is possible to set MySQL @@system_time_zone by either:- Setting TZ environment variable
- Restarting the server using –timezone with mysqld_safe
Eğer bu değişkene değer atanmamışsa NOW() ve UTC_TIMESTAMP() arasında fark yoktur. MySQL sistem saatini UTC kabul eder.
Örnek
Şöyle yaparız
$ export TZ=EST # Server restart mysql> SELECT @@system_time_zone, @@time_zone; +--------------------+-------------+ | @@system_time_zone | @@time_zone | +--------------------+-------------+ | EST | SYSTEM | +--------------------+-------------+ 1 row in set (0.00 sec)
Örnek
Bu değişkene değer atamak için docker compose dosyasında şöyle yaparız. Burada TZ değerine değer atanıyor
version: '3.1'services:db:image: mysql:8.0.27container_name : mysql-8restart: alwaysenvironment:MYSQL_ROOT_PASSWORD: rootMYSQL_USER: advuserMYSQL_PASS: advuserMYSQL_DATABASE: advTZ: Europe/Istanbulvolumes:- D:/mysqlvolume:/var/lib/mysqlports:- "3307:3306"
system_time_zone değişkenini SYSTEM yani işletim sistemi değeri olarak kullandığımız için
> SELECT @@global.time_zone, @@session.time_zone @@global.time_zone @@session.time_zone SYSTEM SYSTEM
Bu sefer farklı çıktı alırız
> SELECT NOW(), UTC_TIMESTAMP() NOW() UTC_TIMESTAMP() Feb 7, 2022, 10:40:47 AM Feb 7, 2022, 7:40:47 AM
Hiç yorum yok:
Yorum Gönder