sql >> Databáze >  >> RDS >> PostgreSQL

Jak make_date() funguje v PostgreSQL

V PostgreSQL make_date() Funkce umožňuje vytvořit datum z jeho samostatných polí roku, měsíce a dne.

Každá část data je uvedena jako celé číslo a výsledek se vrátí jako datum .

Syntaxe

Funkce má následující syntaxi:

make_date(year int, month int, day int)

Kde year , month a day jsou celá čísla představující rok, měsíc a den data.

Příklad

Zde je základní příklad k demonstraci.

SELECT make_date(2020, 07, 25);

Výsledek:

2020-07-25

A můžeme ověřit, že vrací datový typ date s následujícím dotazem.

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

Výsledek:

date

pg_typeof() funkce vrací datový typ svého argumentu, a tak jsem předal make_date() jako argument..

Mimo rozsah

Pokud je některý z argumentů mimo rozsah možných hodnot pro jeho datovou část, zobrazí se chyba „mimo rozsah“.

SELECT make_date(2020, 17, 25);

Výsledek:

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

Tady je to znovu s měsícem 00:

SELECT make_date(2020, 00, 25);

Výsledek:

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

Předávání řetězců jako argumentů

Dokumentace Postgres uvádí, že argumenty musí být celá čísla, ale zdá se, že předávání řetězců funguje (pravděpodobně proto, že jsou implicitně převedeny na celá čísla), pokud je každý argument ve správném rozsahu.

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

Výsledek:

2020-07-25

Opět můžeme použít pg_type() zkontrolovat, že výsledek je ve skutečnosti datum datový typ.

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

Výsledek:

date

Stále se však musíte ujistit, že každý argument bude platný po převedení na celé číslo, jinak se zobrazí chyba, jako je následující.

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

Výsledek:

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

  1. Domovská stránka Oracle 10g express se nezobrazuje

  2. SQL dotaz vrací data z více tabulek

  3. CROSS JOIN vs INNER JOIN v SQL

  4. Jak spustit skript SQL Plus v PowerShell