Mysql
 sql >> Database >  >> RDS >> Mysql

Utilizzo dell'ora IST nella query MySQL

Puoi recuperare l'impostazione del fuso orario per la sessione MySQL corrente con un'istruzione SQL:

mysql> SELECT @@session.time_zone;

Se il DBA non ha impostato il fuso orario su MySQL, verrà impostato automaticamente su un valore di SYSTEM , che rappresenta il fuso orario del sistema operativo.

http://dev.mysql.com/doc /refman/5.5/en/time-zone-support.html

SEGUITO:

In un predicato come nella tua istruzione SQL di esempio:

select * from mytable where dt > current_ist_datetime

(dato dt e current_ist_datetime di tipo di dati DATETIME )il confronto dei valori sarà indipendente da qualsiasi conversione di fuso orario, poiché non ci sono informazioni sul fuso orario associate a un DATETIME valore.

Ovvero, il valore restituito da una colonna di tipo di dati DATETIME non è influenzato dall'impostazione del fuso orario del server MySQL (SELECT @@global.time_zone ) o della sessione MySQL (SELECT @@session.time_zone ).

Il valore restituito da NOW() la funzione, tuttavia, sarà influenzata dall'impostazione del fuso orario della sessione.

Per ottenere quello restituito in IST, assicurati che il fuso orario per la sessione sia specificato correttamente, ad esempio

SET VARIABLES time_zone = "+05:30"

(NB Se la sessione viene recuperata e restituita da un pool di connessioni, gli altri utenti del pool potrebbero non aspettarsi un fuso orario diverso;...)

(NOTA:quanto sopra ignora completamente la confusione introdotta dal driver JDBC, causata dalla "mancata corrispondenza di impedenza" (differenze) tra l'implementazione di MySQL del tipo di dati DATETIME e l'implementazione Java dell'oggetto Date. Se si passano i valori DATETIME su una connessione JDBC, è tutta un'altra palla di confusione.)