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
.