sql >> Database >  >> RDS >> PostgreSQL

Hoe make_date() werkt in PostgreSQL

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

  1. cx_Oracle:Hoe kan ik elke rij als een woordenboek ontvangen?

  2. Wijzig de standaard datum-tijdnotatie op een enkele database in SQL Server

  3. INSERT gebruiken met een PostgreSQL-database met Python

  4. Geneste klassen - CustomRowMapper !! Geen probleem meer!! - Deel 1