sql >> Database >  >> RDS >> PostgreSQL

Hoe lokale tijd naar UTC te converteren?

Dit wordt behandeld in de handleiding , maar het is niet altijd duidelijk hoe je met datums/tijden moet werken. De SQL-specificatie is een beetje bizar.

In het geval van uw vraag is het niet duidelijk of u de tijd in UTC wilt opslaan maar wilt weergeven in de lokale tijd van de server (TimeZone ), of dat u TimeZone . wilt negeren en geef het altijd weer als UTC. Ik ga uit van het laatste.

Voor tijdstempels gebruik je gewoon AT TIME ZONE twee keer, zoals:

SELECT TIMESTAMP '2013-08-13 00:00:00' AT TIME ZONE 'Australia/Sydney' AT TIME ZONE 'UTC';

U moet AT TIME ZONE . gebruiken tweemaal. Eenmaal om de invoer timestamp te converteren naar timestamptz volgens het argument tijdzone, dan nog een om die om te zetten in een timestamp bij UTC.

Helaas vanwege de (IMO waanzinnige) manier waarop de SQL-specificatie AT TIME ZONE definieert voor TIME , je kunt niet hetzelfde doen voor TIME . U moet de TimeZone . manipuleren variabele in plaats daarvan:

SET TimeZone = 'UTC';
SELECT TIME '07:00' AT TIME ZONE 'Australia/Sydney';

Dit geeft je nog steeds een timetz geen time . Dus de weergavewaarde verandert met de timezone instelling.




  1. Toegang tot privévariabele in PHP ( PDO)

  2. Kan ik een MYSQL-tabel maken met behulp van een PDO-geparametriseerde instructie?

  3. Selecteer alle kolommen die groter zijn dan een bepaalde waarde

  4. Ik heb mijn PHP-pagina nodig om mijn BLOB-afbeelding uit de mysql-database te tonen