PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come funziona make_date() in PostgreSQL

In PostgreSQL, il make_date() la funzione ti consente di creare una data dai suoi campi anno, mese e giorno separati.

Ciascuna parte della data viene fornita come un numero intero e il risultato viene restituito come data .

Sintassi

La funzione ha la seguente sintassi:

make_date(year int, month int, day int)

Dove year , month e day sono numeri interi che rappresentano l'anno, il mese e il giorno della data.

Esempio

Ecco un esempio di base da dimostrare.

SELECT make_date(2020, 07, 25);

Risultato:

2020-07-25

E possiamo verificare che restituisca un tipo di dati di data con la seguente domanda.

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

Risultato:

date

Il pg_typeof() function restituisce il tipo di dati del suo argomento, quindi ho passato make_date() come argomento..

Fuori portata

Se uno qualsiasi degli argomenti non rientra nell'intervallo dei possibili valori per la sua parte relativa alla data, verrà visualizzato un errore "fuori intervallo".

SELECT make_date(2020, 17, 25);

Risultato:

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

Eccolo di nuovo con un mese di 00:

SELECT make_date(2020, 00, 25);

Risultato:

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

Passare le stringhe come argomenti

La documentazione di Postgres afferma che gli argomenti devono essere interi, ma il passaggio di stringhe sembra funzionare (probabilmente perché vengono convertite implicitamente in numeri interi), purché ogni argomento rientri nell'intervallo corretto.

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

Risultato:

2020-07-25

Ancora una volta possiamo usare pg_type() per verificare che il risultato sia effettivamente una data tipo di dati.

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

Risultato:

date

Tuttavia, devi comunque assicurarti che ogni argomento sia valido una volta convertito in un numero intero, altrimenti riceverai un errore come il seguente.

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

Risultato:

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