sql >> Database >  >> RDS >> PostgreSQL

Hoe clock_timestamp() werkt in PostgreSQL

In PostgreSQL, clock_timestamp() is een niet-SQL-standaard tijdfunctie die de huidige datum en tijd retourneert.

Een belangrijke overweging van deze functie is dat het resultaat verandert tijdens de uitvoering van een instructie. Daarom zou u een ander resultaat kunnen krijgen in verschillende delen van de instructie als u de functie meerdere keren binnen één enkele instructie aanroept.

Syntaxis

De syntaxis is zo eenvoudig als maar kan:

clock_timestamp()

Het accepteert dus geen parameters.

Voorbeeld

Hier is een eenvoudig voorbeeld om te demonstreren.

SELECT clock_timestamp();

Resultaat:

2020-07-01 09:53:22.823731+10

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 
  clock_timestamp(),
  pg_sleep(5),
  clock_timestamp(),
  pg_sleep(3),
  clock_timestamp();

Resultaat (met verticale uitvoer):

clock_timestamp | 2020-07-01 09:58:29.744838+10
pg_sleep        |
clock_timestamp | 2020-07-01 09:58:34.813448+10
pg_sleep        |
clock_timestamp | 2020-07-01 09:58:37.859197+10

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 clock_timestamp() werd gebeld, was de werkelijke tijd iets anders. Dit komt voornamelijk door de pg_sleep() functie, maar het kan zonder deze nog steeds anders zijn, afhankelijk van hoe snel de query wordt uitgevoerd.

Hier is het weer zonder de pg_sleep() oproepen.

SELECT 
  clock_timestamp(),
  clock_timestamp(),
  clock_timestamp();

Resultaat (met verticale uitvoer):

clock_timestamp | 2020-07-01 10:03:10.828557+10
clock_timestamp | 2020-07-01 10:03:10.828558+10
clock_timestamp | 2020-07-01 10:03:10.828558+10

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. De nieuwe hittegolf van MySQL begrijpen

  2. pgmemcache instellen en gebruiken

  3. Hoe krijg ik min/max van twee gehele getallen in Postgres/SQL?

  4. Hoe krijg ik gegenereerde sleutels van JDBC batch-insert in Oracle?