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);