Sie können die Zeitzoneneinstellung für die aktuelle MySQL-Sitzung mit einer SQL-Anweisung abrufen:
mysql> SELECT @@session.time_zone;
Wenn der DBA die Zeitzone auf MySQL nicht festgelegt hat, wird standardmäßig der Wert SYSTEM
verwendet , die die Zeitzone des Betriebssystems darstellt.
http://dev.mysql.com/doc /refman/5.5/en/time-zone-support.html
NACHVERFOLGUNG:
In einem Prädikat wie in Ihrer Beispiel-SQL-Anweisung:
select * from mytable where dt > current_ist_datetime
(angegeben dt
und current_ist_datetime
vom Datentyp DATETIME
) ist der Vergleich der Werte unabhängig von einer Zeitzonenkonvertierung, da mit einem DATETIME
keine Zeitzoneninformationen verknüpft sind Wert.
Das heißt, der Wert, der von einer Spalte des Datentyps DATETIME
zurückgegeben wird wird nicht von der Zeitzoneneinstellung des MySQL-Servers beeinflusst (SELECT @@global.time_zone
) oder der MySQL-Session (SELECT @@session.time_zone
).
Der von NOW()
zurückgegebene Wert Die Funktion wird jedoch von der time_zone-Einstellung der Sitzung beeinflusst.
Um dies in IST zurückzugeben, stellen Sie sicher, dass die time_zone für die Sitzung korrekt angegeben ist, z. B.
SET VARIABLES time_zone = "+05:30"
(Hinweis:Wenn die Sitzung von einem Verbindungspool abgerufen und zurückgegeben wird, erwarten die anderen Benutzer des Pools möglicherweise keine andere time_zone;...)
(HINWEIS:Das Obige ignoriert vollständig die durch den JDBC-Treiber verursachte Verwirrung, die durch die „Impedanzabweichung“ (Unterschiede) zwischen der MySQL-Implementierung des DATETIME-Datentyps und der Java-Implementierung des Date-Objekts verursacht wird. Wenn Sie DATETIME-Werte über eine JDBC-Verbindung übergeben, das ist der ganze 'andere Ball der Verwirrung.)