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