I PostgreSQL er make_date()
funktionen giver dig mulighed for at oprette en dato fra dens separate år, måned og dag felter.
Hver datodel er angivet som et heltal , og resultatet returneres som en dato .
Syntaks
Funktionen har følgende syntaks:
make_date(year int, month int, day int)
Hvor year
, month
og day
er heltal, der repræsenterer året, måneden og dagen på datoen.
Eksempel
Her er et grundlæggende eksempel at demonstrere.
SELECT make_date(2020, 07, 25);
Resultat:
2020-07-25
Og vi kan bekræfte, at den returnerer datatypen dato med følgende forespørgsel.
SELECT pg_typeof(make_date(2020, 07, 25));
Resultat:
date
pg_typeof()
funktion returnerer datatypen for dets argument, og så jeg sendte make_date()
som argumentet..
Udenfor rækkevidde
Hvis nogen af argumenterne er uden for rækkevidden af de mulige værdier for dens datodel, får du fejlen "uden for område".
SELECT make_date(2020, 17, 25);
Resultat:
ERROR: date field value out of range: 2020-17-25
Her er den igen med en måned på 00:
SELECT make_date(2020, 00, 25);
Resultat:
date field value out of range: 2020-00-25
At sende strenge som argumenter
Postgres-dokumentationen siger, at argumenterne skal være heltal, men at sende strenge ser ud til at virke (sandsynligvis fordi de implicit er konverteret til heltal), så længe hvert argument er inden for dets rette område.
SELECT make_date('2020', '07', '25');
Resultat:
2020-07-25
Igen kan vi bruge pg_type()
for at kontrollere, at resultatet faktisk er en dato datatype.
SELECT pg_typeof(make_date('2020', '07', '25'));
Resultat:
date
Du skal dog stadig sikre dig, at hvert argument er gyldigt, når det først er konverteret til et heltal, ellers får du en fejl som følgende.
SELECT make_date(2020, 'July', 25);
Resultat:
ERROR: invalid input syntax for type integer: "July" LINE 1: SELECT make_date(2020, 'July', 25);