sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur clock_timestamp() fungerar i PostgreSQL

I PostgreSQL, clock_timestamp() är en icke-SQL-standard tidsfunktion som returnerar aktuellt datum och tid.

En viktig faktor för denna funktion är att dess resultat förändras under körningen av en sats. Därför kan du få ett annat resultat i olika delar av satsen om du anropar funktionen flera gånger inom en enskild sats.

Syntax

Syntaxen är hur enkel som helst:

clock_timestamp()

Så den accepterar inga parametrar.

Exempel

Här är ett grundläggande exempel att visa.

SELECT clock_timestamp();

Resultat:

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

Flera samtal

Här är ett grundläggande exempel för att visa hur resultaten kan skilja sig åt när du anropar funktionen flera gånger inom en enda SQL-sats.

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

Resultat (med vertikal utdata):

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

Här använde jag pg_sleep() funktion för att fördröja exekveringen i flera sekunder. Det första samtalet fördröjer exekveringen i 5 sekunder och det andra samtalet fördröjer exekveringen i 3 sekunder.

Vi kan se det varje gång clock_timestamp() kallades, var den faktiska tiden något annorlunda. Detta beror främst på pg_sleep() funktion, men den kan fortfarande vara annorlunda utan den, beroende på hur snabbt frågan körs.

Här är den igen utan pg_sleep() samtal.

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

Resultat (med vertikal utdata):

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

Dessa exempel använder vertikal utdata (vanligtvis kallad expanderad visning i psql) för att göra det lättare att läsa resultaten.

Du kan växla utökad visning i psql med \x .


  1. PostgreSQL, dra och byt

  2. Postgresql ändra kolumntyp från int till UUID

  3. Dela kommaseparerad sträng i en PL/SQL-lagrad proc

  4. Lagra en fil i en databas i motsats till filsystemet?