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.
http://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.)