Nastavení časového pásma pro aktuální relaci MySQL můžete získat pomocí příkazu SQL:
mysql> SELECT @@session.time_zone;
Pokud správce databází nenastavil časové pásmo na MySQL, bude výchozí hodnota SYSTEM , což představuje časové pásmo v operačním systému.
https://dev.mysql.com/doc /refman/5.5/en/time-zone-support.html
NÁSLEDUJÍCÍ:
V predikátu jako ve vašem příkladu příkazu SQL:
select * from mytable where dt > current_ist_datetime
(zadáno dt a current_ist_datetime datového typu DATETIME )porovnání hodnot bude nezávislé na jakékoli konverzi časového pásma, protože s DATETIME nejsou spojeny žádné informace o časovém pásmu hodnotu.
To znamená, že hodnota vrácená ze sloupce datového typu DATETIME není ovlivněno nastavením časového pásma serveru MySQL (SELECT @@global.time_zone ) nebo relace MySQL (SELECT @@session.time_zone ).
Hodnota vrácená funkcí NOW() funkce však bude ovlivněna nastavením časového pásma relace.
Chcete-li, aby to bylo vráceno v IST, ujistěte se, že je správně zadáno časové pásmo pro relaci, např.
SET VARIABLES time_zone = "+05:30"
(Poznámka:Pokud je relace načtena a vrácena z fondu připojení, ostatní uživatelé fondu nemusí očekávat jiné časové pásmo;...)
(POZNÁMKA:výše uvedené zcela ignoruje zmatek způsobený ovladačem JDBC, způsobený „nesouladem impedance“ (rozdíly) mezi implementací datového typu DATETIME v MySQL a implementací objektu Date v Javě. Pokud předáváte hodnoty DATETIME přes připojení JDBC, to je celá 'další koule zmatku.)