sql >> Database >  >> RDS >> PostgreSQL

Hoe timeofday() werkt in PostgreSQL

In PostgreSQL, timeofday() is een niet-SQL-standaard tijdfunctie die de huidige datum en tijd retourneert, met de afkorting van de tijdzone.

Het is vergelijkbaar met de clock_timestamp() functie, behalve dat het zijn resultaat retourneert als een opgemaakte text tekenreeks in plaats van een timestamp with time zone waarde.

Het resultaat van beide functies verandert tijdens de uitvoering van een instructie. Daarom kunt u een ander resultaat krijgen in verschillende delen van de instructie als u de functies meerdere keren binnen een enkele instructie aanroept.

Syntaxis

De syntaxis gaat als volgt:

timeofday()

Het accepteert dus geen parameters.

Voorbeeld

Hier is een eenvoudig voorbeeld om te demonstreren.

SELECT timeofday();

Resultaat:

Thu Jul 02 10:00:27.068776 2020 AEST

Meerdere oproepen

Hier is een eenvoudig voorbeeld om te laten zien hoe de resultaten kunnen verschillen wanneer u de functie meerdere keren aanroept binnen een enkele SQL-instructie.

\x
SELECT 
  timeofday(),
  pg_sleep(5),
  timeofday(),
  pg_sleep(3),
  timeofday();

Resultaat (met verticale uitvoer):

timeofday | Thu Jul 02 10:02:23.060770 2020 AEST
pg_sleep  | 
timeofday | Thu Jul 02 10:02:28.131195 2020 AEST
pg_sleep  | 
timeofday | Thu Jul 02 10:02:31.192749 2020 AEST

Hier gebruikte ik de pg_sleep() functie om de uitvoering enkele seconden uit te stellen. De eerste oproep vertraagt ​​de uitvoering met 5 seconden en de tweede oproep vertraagt ​​de uitvoering met 3 seconden.

We kunnen zien dat elke keer timeofday() werd gebeld, was de werkelijke tijd iets anders. Dit komt voornamelijk door de pg_sleep() functie, maar het kan ook iets anders zijn zonder deze functie, afhankelijk van hoe snel de query wordt uitgevoerd.

Hier is het weer zonder de pg_sleep() oproepen.

SELECT 
  timeofday(),
  timeofday(),
  timeofday();

Resultaat (met verticale uitvoer):

timeofday | Thu Jul 02 10:03:26.044065 2020 AEST
timeofday | Thu Jul 02 10:03:26.044076 2020 AEST
timeofday | Thu Jul 02 10:03:26.044080 2020 AEST

Deze voorbeelden gebruiken verticale uitvoer (meestal uitgebreide weergave genoemd in psql) om het gemakkelijker te maken om de resultaten te lezen.

U kunt de uitgebreide weergave in psql schakelen met \x .


  1. JLabel bijwerken via SetIcon van bytea-gegevenstype in postgres

  2. Verbinden door in Oracle SQL

  3. JSON_EXTRACT() – Gegevens retourneren uit een JSON-document in MySQL

  4. Hoe kan ik een taak plannen om dagelijks een SQL-query uit te voeren?