PostgreSQL nám poskytuje několik způsobů, jak získat den, měsíc a rok z data.
Tři funkce, které vás okamžitě napadnou, jsou; DATE_PART()
, EXTRACT()
a TO_CHAR()
.
EXTRACT()
EXTRACT()
funkce načítá podpole, jako je rok, měsíc, hodina nebo minuta, část z hodnoty data/času.
Příklad:
SELECT EXTRACT(YEAR FROM date '2035-10-30');
Výsledek:
2035
Můžeme vrátit různé části data v samostatných polích provedením tří samostatných volání této funkce:
SELECT
EXTRACT(DAY FROM date '2035-10-30') AS "Day",
EXTRACT(DOW FROM date '2035-10-30') AS "DOW",
EXTRACT(DOY FROM date '2035-10-30') AS "DOY",
EXTRACT(MONTH FROM date '2035-10-30') AS "Month",
EXTRACT(YEAR FROM date '2035-10-30') AS "Year";
Výsledek:
Day | DOW | DOY | Month | Year -----+-----+-----+-------+------ 30 | 2 | 303 | 10 | 2035
Zde jsem z data vrátil den v měsíci, den v týdnu, den v roce, měsíc a rok.
Další příklady a seznam názvů polí, která může tato funkce vrátit, najdete v části Jak funguje Extract() v PostgreSQL.
DATE_PART()
DATE_PART()
funkce je ekvivalentem EXTRACT()
, ale s mírně odlišnou syntaxí.
SELECT
DATE_PART('DAY', date '2035-10-30') AS "Day",
DATE_PART('DOW', date '2035-10-30') AS "DOW",
DATE_PART('DOY', date '2035-10-30') AS "DOY",
DATE_PART('MONTH', date '2035-10-30') AS "Month",
DATE_PART('YEAR', date '2035-10-30') AS "Year";
Výsledek:
Day | DOW | DOY | Month | Year -----+-----+-----+-------+------ 30 | 2 | 303 | 10 | 2035
Tato funkce vyžaduje, aby byl první argument uveden jako řetězec a čárka oddělovala dva argumenty namísto FROM
klíčové slovo.
TO_CHAR()
TO_CHAR()
Funkce je flexibilnější v tom, že ji lze použít k poskytování širší škály výstupů. Tuto funkci můžeme například použít k vrácení dne, měsíce a roku v jednom poli:
SELECT TO_CHAR(date '2045-12-02', 'Day, DDth Month YYYY');
Výsledek:
Saturday , 02nd December 2045
Můžeme použít fm
modifikátor šablony pro potlačení všech výplní, které lze použít:
SELECT TO_CHAR(date '2165-04-01', 'fmDay, fmDDth fmMonth YYYY');
Výsledek:
Monday, 1st April 2165
Všimněte si také, že th
modifikátor šablony je dostatečně chytrý, aby věděl, zda st
, nd
, rd
, nebo th
by měl být připojen.
Zde je příklad, který používá různá volání TO_CHAR()
pro výstup různých částí data do samostatných polí:
SELECT
TO_CHAR(date '2165-04-01', 'fmDay') AS "Day",
TO_CHAR(date '2165-04-01', 'fmDD') AS "DD",
TO_CHAR(date '2165-04-01', 'fmMonth') AS "Month",
TO_CHAR(date '2165-04-01', 'YYYY') AS "YYYY";
Výsledek:
Day | DD | Month | YYYY --------+----+-------+------ Monday | 1 | April | 2165