Ustawienia strefy czasowej dla bieżącej sesji MySQL można pobrać za pomocą instrukcji SQL:
mysql> SELECT @@session.time_zone;
Jeśli administrator nie ustawił strefy czasowej w MySQL, domyślnie przyjmie ona wartość SYSTEM
, która reprezentuje strefę czasową w systemie operacyjnym.
http://dev.mysql.com/doc /refman/5.5/en/time-zone-support.html
KONTYNUACJA:
W predykacie, jak w przykładowej instrukcji SQL:
select * from mytable where dt > current_ist_datetime
(biorąc pod uwagę dt
i current_ist_datetime
typu danych DATETIME
)porównanie wartości będzie niezależne od jakiejkolwiek konwersji strefy czasowej, ponieważ nie ma informacji o strefie czasowej powiązanej z DATETIME
wartość.
To znaczy wartość zwrócona z kolumny typu danych DATETIME
nie ma wpływu ustawienie time_zone serwera MySQL (SELECT @@global.time_zone
) lub sesji MySQL (SELECT @@session.time_zone
).
Wartość zwracana przez NOW()
funkcja będzie jednak zależna od ustawienia strefy czasowej sesji.
Aby uzyskać to zwrócone w IST, upewnij się, że strefa czasowa sesji jest określona poprawnie, np.
SET VARIABLES time_zone = "+05:30"
(Uwaga:jeśli sesja jest pobierana i zwracana z puli połączeń, inni użytkownicy puli mogą nie oczekiwać innej strefy czasowej;...)
(UWAGA:powyższe całkowicie ignoruje zamieszanie wprowadzone przez sterownik JDBC, spowodowane „niezgodnością impedancji” (różnice) między implementacją MySQL typu DATETIME a implementacją obiektu Date w Javie. Jeśli przekazujesz wartości DATETIME przez połączenie JDBC, to cała „kolejna kula zamieszania.)