PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment clock_timestamp() fonctionne dans PostgreSQL

Dans PostgreSQL, clock_timestamp() est une fonction d'heure non standard SQL qui renvoie la date et l'heure actuelles.

Une considération importante de cette fonction est que son résultat change tout au long de l'exécution d'une instruction. Par conséquent, vous pouvez obtenir un résultat différent dans différentes parties de l'instruction si vous appelez la fonction plusieurs fois dans une même instruction.

Syntaxe

La syntaxe est aussi simple que possible :

clock_timestamp()

Il n'accepte donc aucun paramètre.

Exemple

Voici un exemple de base pour illustrer.

SELECT clock_timestamp();

Résultat :

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

Appels multiples

Voici un exemple de base pour montrer comment les résultats peuvent différer lorsque vous appelez la fonction plusieurs fois dans une même instruction SQL.

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

Résultat (en utilisant la sortie verticale) :

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

Ici, j'ai utilisé le pg_sleep() fonction pour retarder l'exécution de plusieurs secondes. Le premier appel retarde l'exécution de 5 secondes et le deuxième appel retarde l'exécution de 3 secondes.

Nous pouvons voir qu'à chaque fois clock_timestamp() a été appelée, l'heure réelle était légèrement différente. Ceci est principalement dû au pg_sleep() fonction, mais cela pourrait toujours être différent sans elle, selon la vitesse d'exécution de la requête.

Le revoilà sans le pg_sleep() appels.

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

Résultat (en utilisant la sortie verticale) :

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

Ces exemples utilisent une sortie verticale (généralement appelée affichage étendu dans psql) pour faciliter la lecture des résultats.

Vous pouvez basculer l'affichage étendu dans psql avec \x .