sql >> Databáze >  >> RDS >> Mysql

Použití času IST v dotazu mysql

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.)



  1. MySQL/PHP:Jak získat sloupce a související data

  2. Proč nemůžeme spustit uloženou proceduru v příkazu select v oracle? existuje nějaký pádný důvod?

  3. MySQL volejbalové pořadí

  4. Nahraďte znaky víceznakovými řetězci