Dans PostgreSQL, le make_time()
permet de créer une heure à partir de ses champs heure, minute et seconde.
Syntaxe
La fonction a la syntaxe suivante :
make_time(hour int, min int, sec double precision)
Où 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 résultat est renvoyé sous la forme d'une heure . Plus précisément, il est renvoyé sous la forme heure sans fuseau horaire .
Exemple
Voici un exemple de base pour illustrer.
SELECT make_time(7, 45, 15.08);
Résultat :
07:45:15.08
Et nous pouvons vérifier le type de retour avec la requête suivante.
SELECT pg_typeof(make_time(7, 45, 15.08));
Résultat :
time without time zone
Le pg_typeof()
la fonction renvoie le type de données de son argument, et j'ai donc passé make_time()
comme argument..
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_time(25, 45, 15.08);
Résultat :
ERROR: time field value out of range: 25:45:15.08
Passer des chaînes comme arguments
La documentation Postgres indique que les arguments doivent être des entiers (et une double précision dans le cas des seconds
argument), mais le passage de chaînes fonctionne également (probablement parce qu'elles sont implicitement converties en nombres entiers), tant que chaque argument se trouve dans sa plage appropriée.
SELECT make_time('7', '45', '15.08');
Résultat :
07:45:15.08
Encore une fois, nous pouvons utiliser pg_type()
pour vérifier le type de données résultant.
SELECT pg_typeof(make_time('7', '45', '15.08'));
Résultat :
time without time zone
Cependant, vous devez toujours vous assurer que chaque argument serait valide une fois converti en entier, sinon vous obtiendrez une erreur.
SELECT make_time('25', '45', '15.08');
Résultat :
ERROR: time field value out of range: 25:45:15.08