sql >> Database >  >> RDS >> PostgreSQL

PostgreSQL:rijen selecteren die voorkomen op een bepaalde dag van de week, in een specifieke tijdzone

AT TIME ZONE indien toegepast op een timestamp without timezone produceert een timestamp with timezone (en andersom). En deze timestamp with timezone wordt geïnterpreteerd in de tijdzone van uw sessie (wat in uw geval wordt gedwongen tot UTC ).

Dus de uitdrukking EXTRACT (dow from time at time zone 'Brisbane/Australia') haalt de dag in Brisbane niet om time (UTC) , het extraheert de dag die overeenkomt met de geconverteerde time vanuit het oogpunt van iemand die virtueel in de UTC-tijdzone leeft.

Als ik bijvoorbeeld dit typ en doe alsof ik in UTC ben:

=> set timezone to 'UTC';
=> select now(),now() at time zone 'Australia/Brisbane';
             now              |         timezone          
------------------------------+---------------------------
 2013-10-27 18:01:03.15286+00 | 2013-10-28 04:01:03.15286

Prima, het is zondag 18:01 in UTC en maandag 04:01 in Brisbane

Maar als de verplaatsing van de tijdzone wordt toegepast op een timestamp without timezone :

select now(),now()::timestamp at time zone 'Australia/Brisbane';
              now              |           timezone            
-------------------------------+-------------------------------
 2013-10-27 18:01:57.878541+00 | 2013-10-27 08:01:57.878541+00

Merk op hoe de tweede kolom verschilt van het vorige resultaat. Het is eigenlijk 20 uur vrij van Brisbane uitgedrukt in UTC:het is vermoedelijk het technisch correcte antwoord op een vraag die niet veel zin heeft.

Vermoedelijk wil je dit:

EXTRACT (dow from (time AT TIME ZONE 'UTC') at time zone 'Brisbane/Australia')=0

die zou moeten antwoorden:is de datum en tijd time zoals gemeten in UTC overeenkomt met een zondag in Brisbane?




  1. INSERT INTO gebruiken vanuit SQL Server om Salesforce-gegevens te wijzigen

  2. Symfony en Doctrine maken migratie zonder effect

  3. Controleer twee datum was niet tussen twee andere datums + MYSQl

  4. Mysql SET NAMES UTF8 - hoe kom ik er vanaf?