De TFM, souligne le mien :
9.9.4. Date/heure actuelle
PostgreSQL fournit un certain nombre de fonctions qui renvoient des valeurs liées à la date et à l'heure actuelles. Ces fonctions standard SQL retournent toutes des valeurs basées sur l'heure de début de la transaction en cours :
CURRENT_DATE CURRENT_TIME CURRENT_TIMESTAMP CURRENT_TIME(precision) CURRENT_TIMESTAMP(precision) LOCALTIME LOCALTIMESTAMP LOCALTIME(precision) LOCALTIMESTAMP(precision)
...
Étant donné que ces fonctions renvoient l'heure de début de la transaction en cours, leurs valeurs ne changent pas pendant la transaction. Ceci est considéré comme une fonctionnalité :l'intention est de permettre à une seule transaction d'avoir une notion cohérente de l'heure "actuelle", de sorte que plusieurs modifications au sein d'une même transaction portent le même horodatage.
PostgreSQL fournit également des fonctions qui renvoient l'heure de début de l'instruction en cours, ainsi que l'heure actuelle réelle à l'instant où la fonction est appelée. La liste complète des fonctions temporelles non standard SQL est :
transaction_timestamp() statement_timestamp() clock_timestamp() timeofday() now()
transaction_timestamp()
est équivalent àCURRENT_TIMESTAMP
, mais est nommé pour refléter clairement ce qu'il renvoie.statement_timestamp()
renvoie l'heure de début de l'instruction en cours (plus précisément, l'heure de réception du dernier message de commande du client).statement_timestamp()
ettransaction_timestamp()
renvoie la même valeur lors de la première commande d'une transaction, mais peut différer lors des commandes suivantes.clock_timestamp()
renvoie l'heure actuelle actuelle , et par conséquent sa valeur change même au sein d'une seule commande SQL.timeofday()
est une fonction PostgreSQL historique. Commeclock_timestamp()
, il renvoie l'heure actuelle réelle, mais sous la forme d'une chaîne de texte formatée plutôt que d'un horodatage avec une valeur de fuseau horaire.now()
est un équivalent PostgreSQL traditionnel àtransaction_timestamp()
.