V PostgreSQL můžete použít extract() funkce pro získání dne z data.
Můžete také použít date_part() udělat to samé.
Při extrakci dne z data musíte určit, jaký význam slova „den“ máte na mysli. Například „den v týdnu“, „den v měsíci“, „den v roce“ atd.
Příklad 1:Den v týdnu
Zde je příklad použití extract() funkce pro extrahování dne v týdnu z data.
Pomocí dow vrátí den v týdnu od neděle (0) do soboty (6).
SELECT extract(dow from date '2020-12-27') AS "Day of week", to_char(date '2020-12-27', 'Day') AS "Day Name";
Výsledek:
Day of week | Day Name
-------------+-----------
0 | Sunday
V tomto příkladu jsem také vrátil název dne, aby nedošlo k záměně ohledně toho, který den se skutečně vrací.
Pro zbývající příklady použiji stejné datum, takže v těchto příkladech nemusím tisknout název dne.
Příklad 2:ISO den v týdnu
Pomocí isodow vrátí den v týdnu od pondělí (1) do neděle (7).
SELECT extract(
isodow from date '2020-12-27'
) AS "ISO Day of week";
Výsledek:
ISO Day of week
-----------------
7
Důvod, proč jsem v těchto příkladech použil neděli, je ten, že zdůrazňuje rozdíl mezi isodow a dow .
Příklad 3:Den v měsíci
Při použití časového razítka nebo datum hodnoty, day vrátí den v měsíci (1 – 31).
SELECT extract(
day from date '2020-12-27'
) AS "Day of month";
Výsledek:
Day of month
--------------
27
Při použití intervalu hodnotu, day pole má za následek počet vrácených dní.
SELECT extract(
day from interval '32 weeks'
) AS "Number of days";
Výsledek:
Number of days
----------------
224
Příklad 4:Den v roce
Pomocí doy vrátí den v roce (1 – 365/366).
SELECT extract(
doy from date '2020-12-27'
) AS "Day of year";
Výsledek:
Day of year
-------------
362
Příklad 5:Funkce date_part()
date_part() funkci lze použít místo extract() funkce. Zde je příklad.
SELECT date_part(
'doy', timestamp '2020-12-27'
) AS "Day of year";
Výsledek:
Day of year
-------------
362