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

Comment make_date() fonctionne dans PostgreSQL

Dans PostgreSQL, le make_date() vous permet de créer une date à partir de ses champs séparés année, mois et jour.

Chaque partie de date est fournie sous la forme d'un entier , et le résultat est renvoyé sous la forme d'une date .

Syntaxe

La fonction a la syntaxe suivante :

make_date(year int, month int, day int)

year , month , et day sont des nombres entiers représentant l'année, le mois et le jour de la date.

Exemple

Voici un exemple de base pour illustrer.

SELECT make_date(2020, 07, 25);

Résultat :

2020-07-25

Et nous pouvons vérifier qu'il renvoie un type de données de date avec la requête suivante.

SELECT pg_typeof(make_date(2020, 07, 25));

Résultat :

date

Le pg_typeof() la fonction renvoie le type de données de son argument, et j'ai donc passé make_date() 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_date(2020, 17, 25);

Résultat :

ERROR: date field value out of range: 2020-17-25

Le revoici avec un mois de 00 :

SELECT make_date(2020, 00, 25);

Résultat :

date field value out of range: 2020-00-25

Passer des chaînes comme arguments

La documentation Postgres indique que les arguments doivent être des nombres entiers, mais le passage de chaînes semble fonctionner (probablement parce qu'ils sont implicitement convertis en nombres entiers), tant que chaque argument est dans sa plage appropriée.

SELECT make_date('2020', '07', '25');

Résultat :

2020-07-25

Encore une fois, nous pouvons utiliser pg_type() pour vérifier que le résultat est bien une date type de données.

SELECT pg_typeof(make_date('2020', '07', '25'));

Résultat :

date

Cependant, vous devez toujours vous assurer que chaque argument serait valide une fois converti en entier, sinon vous obtiendrez une erreur telle que la suivante.

SELECT make_date(2020, 'July', 25);

Résultat :

ERROR: invalid input syntax for type integer: "July"
LINE 1: SELECT make_date(2020, 'July', 25);