In PostgreSQL, de make_date()
Met deze functie kunt u een datum maken uit de afzonderlijke velden voor jaar, maand en dag.
Elk datumgedeelte wordt geleverd als een geheel getal , en het resultaat wordt geretourneerd als een datum .
Syntaxis
De functie heeft de volgende syntaxis:
make_date(year int, month int, day int)
Waar year
, month
, en day
zijn gehele getallen die het jaar, de maand en de dag van de datum vertegenwoordigen.
Voorbeeld
Hier is een eenvoudig voorbeeld om te demonstreren.
SELECT make_date(2020, 07, 25);
Resultaat:
2020-07-25
En we kunnen verifiëren dat het een gegevenstype van datum retourneert met de volgende vraag.
SELECT pg_typeof(make_date(2020, 07, 25));
Resultaat:
date
De pg_typeof()
functie retourneert het gegevenstype van zijn argument, en dus heb ik make_date()
. doorgegeven als het argument..
Buiten bereik
Als een van de argumenten buiten het bereik van de mogelijke waarden voor het datumgedeelte valt, krijgt u de foutmelding 'buiten bereik'.
SELECT make_date(2020, 17, 25);
Resultaat:
ERROR: date field value out of range: 2020-17-25
Hier is hij weer met een maand van 00:
SELECT make_date(2020, 00, 25);
Resultaat:
date field value out of range: 2020-00-25
Snaren doorgeven als argument
De Postgres-documentatie stelt dat de argumenten gehele getallen moeten zijn, maar het doorgeven van strings lijkt te werken (waarschijnlijk omdat ze impliciet zijn geconverteerd naar gehele getallen), zolang elk argument binnen het juiste bereik valt.
SELECT make_date('2020', '07', '25');
Resultaat:
2020-07-25
Opnieuw kunnen we pg_type()
. gebruiken om te controleren of het resultaat inderdaad een datum is gegevenstype.
SELECT pg_typeof(make_date('2020', '07', '25'));
Resultaat:
date
U moet er echter nog steeds voor zorgen dat elk argument geldig is nadat het is geconverteerd naar een geheel getal, anders krijgt u een foutmelding zoals de volgende.
SELECT make_date(2020, 'July', 25);
Resultaat:
ERROR: invalid input syntax for type integer: "July" LINE 1: SELECT make_date(2020, 'July', 25);