Dans PostgreSQL, le make_timestamptz()
la fonction vous permet de créer un horodatage avec fuseau horaire à partir de ses champs année, mois, jour, heure, minute et seconde, ainsi que d'un champ fuseau horaire facultatif.
Syntaxe
La fonction a la syntaxe suivante :
make_timestamptz(year int, month int, day int, hour int, min int, sec double precision, [ timezone text ])
Où year
, month
, et day
sont des nombres entiers représentant l'année, le mois et le jour de la date, et hour
est la partie heure, min
est la partie minutes, et sec
est la partie des secondes.
L'heure et les minutes sont fournies sous la forme d'un entier , les secondes sont fournies en double précision .
Le timezone
facultatif l'argument est pour le fuseau horaire. S'il n'est pas spécifié, le fuseau horaire actuel est utilisé.
Le résultat est renvoyé sous la forme d'une heure avec fuseau horaire .
Exemple
Voici un exemple de base pour illustrer.
SELECT make_timestamptz(1999, 03, 14, 10, 35, 12.15);
Résultat :
1999-03-14 10:35:12.15+10
Dans ce cas, je n'ai pas fourni de fuseau horaire, il a donc utilisé le fuseau horaire actuel.
Nous pouvons vérifier le type de retour avec la requête suivante.
SELECT pg_typeof(make_timestamptz(1999, 03, 14, 10, 35, 12.15));
Résultat :
timestamp with time zone
Le pg_typeof()
la fonction renvoie le type de données de son argument, et j'ai donc passé make_timestamptz()
comme argument.
Spécifiez un fuseau horaire
Dans cet exemple, je fournis explicitement un fuseau horaire.
SELECT make_timestamptz(1999, 03, 14, 10, 35, 12.15, 'Indian/Mauritius');
Résultat :
1999-03-14 16:35:12.15+10
Voici un autre exemple, mais avec différentes valeurs de fuseau horaire.
\x
SELECT
make_timestamptz(2000, 01, 01, 00, 01, 00.00, 'ACDT'),
make_timestamptz(2000, 01, 01, 00, 01, 00.00, 'ACST'),
make_timestamptz(2000, 01, 01, 00, 01, 00.00, 'ACT'),
make_timestamptz(2000, 01, 01, 00, 01, 00.00, '+01'),
make_timestamptz(2000, 01, 01, 00, 01, 00.00, '-01'),
make_timestamptz(2000, 01, 01, 00, 01, 00.00, 'NZ');
Résultat (en utilisant la sortie verticale) :
make_timestamptz | 1999-12-31 23:31:00+10 make_timestamptz | 2000-01-01 00:31:00+10 make_timestamptz | 2000-01-01 15:01:00+10 make_timestamptz | 2000-01-01 09:01:00+10 make_timestamptz | 2000-01-01 11:01:00+10 make_timestamptz | 1999-12-31 21:01:00+10
Dans cet exemple, j'ai utilisé \x
pour activer l'affichage étendu (également appelé "sortie verticale") afin de faciliter la lecture des résultats.
Saisie de \x
bascule l'affichage étendu (c'est-à-dire qu'il l'active et le désactive).
Consultez Renvoyer une liste des fuseaux horaires pris en charge par PostgreSQL pour obtenir une liste des fuseaux horaires valides.
Hors de portée
Si l'un des arguments est hors de la plage des valeurs possibles pour sa partie date, vous obtiendrez une erreur "hors plage".
SELECT make_timestamptz(1999, 03, 32, 10, 35, 12.15);
Résultat :
ERROR: date field value out of range: 1999-03-32
Dans ce cas, le jour était 32, ce qui est hors plage, et le message expliquait donc que la valeur du champ de date était hors plage.
Si seule la valeur du champ de temps est hors plage, l'erreur est formulée en conséquence.
SELECT make_timestamptz(1999, 03, 30, 10, 61, 12.15);
Résultat :
ERROR: time field value out of range: 10:61:12.15
Dans ce cas, les minutes
l'argument est 61, ce qui est hors limites.
Horodatage sans fuseau horaire
Pour créer un horodatage sans fuseau horaire, utilisez le make_timestamp()
fonction.