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