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

Comment timeofday() fonctionne dans PostgreSQL

Dans PostgreSQL, timeofday() est une fonction d'heure non standard SQL qui renvoie la date et l'heure actuelles, avec l'abréviation du fuseau horaire.

C'est similaire à clock_timestamp() fonction, sauf qu'elle renvoie son résultat sous la forme d'un text formaté chaîne plutôt qu'un timestamp with time zone valeur.

Le résultat des deux fonctions 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 les fonctions plusieurs fois dans une même instruction.

Syntaxe

La syntaxe ressemble à ceci :

timeofday()

Il n'accepte donc aucun paramètre.

Exemple

Voici un exemple de base pour illustrer.

SELECT timeofday();

Résultat :

Thu Jul 02 10:00:27.068776 2020 AEST

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

Résultat (en utilisant la sortie verticale) :

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

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 timeofday() a été appelée, l'heure réelle était légèrement différente. Ceci est principalement dû au pg_sleep() fonction, mais elle pourrait également être légèrement différente sans elle, selon la vitesse d'exécution de la requête.

Le revoilà sans le pg_sleep() appels.

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

Résultat (en utilisant la sortie verticale) :

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

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 .