Du kan hente tidszoneindstillingen for den aktuelle MySQL-session med en SQL-sætning:
mysql> SELECT @@session.time_zone;
Hvis DBA ikke har indstillet tidszonen på MySQL, vil den som standard have værdien SYSTEM
, som repræsenterer tidszonen på operativsystemet.
http://dev.mysql.com/doc /refman/5.5/da/time-zone-support.html
OPFØLGNING:
I et prædikat som i dit eksempel SQL-sætning:
select * from mytable where dt > current_ist_datetime
(givet dt
og current_ist_datetime
af datatypen DATETIME
) sammenligningen af værdierne vil være uafhængig af enhver tidszonekonvertering, da der ikke er nogen tidszoneoplysninger forbundet med en DATETIME
værdi.
Det vil sige værdien returneret fra en kolonne med datatypen DATETIME
er ikke påvirket af tidszoneindstillingen for MySQL-serveren (SELECT @@global.time_zone
) eller af MySQL-sessionen (SELECT @@session.time_zone
).
Værdien returneret af NOW()
funktion vil dog blive påvirket af tidszoneindstillingen for sessionen.
For at få det returneret i IST skal du sikre dig, at tidszonen for sessionen er angivet korrekt, f.eks.
SET VARIABLES time_zone = "+05:30"
(NB. Hvis sessionen hentes fra og returneres fra en forbindelsespulje, forventer de andre brugere af poolen muligvis ikke en anden tidszone;...)
(BEMÆRK:Ovenstående ignorerer fuldstændig den forvirring, som JDBC-driveren introducerer, forårsaget af "impedansmismatch" (forskelle) mellem MySQL's implementering af DATETIME-datatypen og Java-implementering af Date-objektet. Hvis du sender DATETIME-værdier over en JDBC-forbindelse, det er ikke noget forvirring.)