Problème :
Vous souhaitez obtenir la date et l'heure actuelles avec les informations de fuseau horaire à partir d'une base de données PostgreSQL.
Solution :
Nous utiliserons CURRENT_TIMESTAMP ou NOW() pour obtenir la date et l'heure actuelles avec le décalage de fuseau horaire.
SELECT CURRENT_TIMESTAMP ;
Voici le résultat de la requête :
2019-09-15 13:13:12.118432+02
Discussion :
CURRENT_TIMESTAMP
renvoie la date, l'heure et le décalage horaire actuels (en utilisant la date, l'heure et le fuseau horaire de la machine sur laquelle PostgreSQL est exécuté). Ceci est renvoyé sous forme de valeur dans 'YYYY-MM-DD hh:mm:ss.nnnnnn+/-tz' format. Dans ce format :
- AAAA est une année à 4 chiffres.
- MM est un mois à 2 chiffres.
- JJ est un jour du mois à 2 chiffres.
- hh est une heure à 2 chiffres.
- mm est une minute à 2 chiffres.
- ss est une seconde à 2 chiffres.
- nnnnnn définit le nombre de fractions de secondes (c'est-à-dire la précision) de 0 à 6.
- +tz ou -tz est le décalage du fuseau horaire, plus ou moins par rapport à UTC.
Comme vous le remarquez, cette fonction n'a pas de parenthèses. Cependant, si vous souhaitez afficher une date et une heure avec une précision spécifique, vous pouvez utiliser l'argument entier facultatif. Il renvoie une date et une heure avec des fractions de secondes et le décalage du fuseau horaire. Cet argument doit être compris entre 0 et 6 ; 0 n'est pas une fraction de seconde, 1 est une fraction de seconde (par exemple, une décimale après la virgule), etc. Regardez l'exemple suivant :
SELECT CURRENT_TIMESTAMP(3) ;
Voici le résultat de la requête :
2019-09-15 13:01:51.142+02
Ce résultat contient une fraction de seconde à 3 chiffres car nous avons mis 3 comme argument dans la fonction CURRENT_TIMESTAMP. Le décalage horaire apparaît toujours à la fin.
L'heure renvoyée par cette fonction ne change pas pendant les transactions ou une seule requête. C'est toujours l'heure à laquelle la transaction a commencé.
NOW() est similaire au CURRENT_TIMESTAMP
fonction et renvoie le même résultat. La différence est que CURRENT_TIMESTAMP
est la fonction standard SQL, tandis que NOW() est spécifique à PostgreSQL.
SELECT NOW() ;
Voici le résultat de la requête :
2019-08-27 12:18:55.324145+02
Notez que la fonction NOW() nécessite des crochets. Cependant, vous pouvez les laisser vides et obtenir la valeur par défaut.
CURRENT_TIMESTAMP et NOW() renvoient le timestamptz type de données.