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

Brug af IST-tid i mysql-forespørgsel

Du kan hente tidszoneindstillingen for den aktuelle MySQL-session med en SQL-sætning:

mysql> SELECT @@session.time_zone;

Hvis DBA ikke har indstillet tidszonen på MySQL, vil den som standard have værdien SYSTEM , som repræsenterer tidszonen på operativsystemet.

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

OPFØLGNING:

I et prædikat som i dit eksempel SQL-sætning:

select * from mytable where dt > current_ist_datetime

(givet dt og current_ist_datetime af datatypen DATETIME ) sammenligningen af ​​værdierne vil være uafhængig af enhver tidszonekonvertering, da der ikke er nogen tidszoneoplysninger forbundet med en DATETIME værdi.

Det vil sige værdien returneret fra en kolonne med datatypen DATETIME er ikke påvirket af tidszoneindstillingen for MySQL-serveren (SELECT @@global.time_zone ) eller af MySQL-sessionen (SELECT @@session.time_zone ).

Værdien returneret af NOW() funktion vil dog blive påvirket af tidszoneindstillingen for sessionen.

For at få det returneret i IST skal du sikre dig, at tidszonen for sessionen er angivet korrekt, f.eks.

SET VARIABLES time_zone = "+05:30"

(NB. Hvis sessionen hentes fra og returneres fra en forbindelsespulje, forventer de andre brugere af poolen muligvis ikke en anden tidszone;...)

(BEMÆRK:Ovenstående ignorerer fuldstændig den forvirring, som JDBC-driveren introducerer, forårsaget af "impedansmismatch" (forskelle) mellem MySQL's implementering af DATETIME-datatypen og Java-implementering af Date-objektet. Hvis du sender DATETIME-værdier over en JDBC-forbindelse, det er ikke noget forvirring.)



  1. ddmmyyyy til sql datetime i SQL

  2. Masseopdatering i C#

  3. datoforskel, inklusive klokkeslæt

  4. Sådan bruger du SignalR i en webfarm ved at bruge SQL-serveren som backplane