W PostgreSQL możesz użyć extract() funkcja, aby uzyskać dzień od daty.
Możesz także użyć date_part() zrobić to samo.
Wyodrębniając dzień z daty, musisz określić, jakie znaczenie ma na myśli słowo „dzień”. Na przykład „dzień tygodnia”, „dzień miesiąca”, „dzień roku” itp.
Przykład 1:Dzień tygodnia
Oto przykład użycia extract() funkcja wyodrębniania dnia tygodnia z daty.
Korzystanie z dow zwraca dzień tygodnia od niedzieli (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";
Wynik:
Day of week | Day Name
-------------+-----------
0 | Sunday
W tym przykładzie zwróciłem również nazwę dnia, aby nie było nieporozumień co do tego, który dzień jest faktycznie zwracany.
W pozostałych przykładach użyję tej samej daty, więc nie ma potrzeby drukowania nazwy dnia w tych przykładach.
Przykład 2:Dzień tygodnia ISO
Używanie isodow zwraca dzień tygodnia od poniedziałku (1) do niedzieli (7).
SELECT extract(
isodow from date '2020-12-27'
) AS "ISO Day of week";
Wynik:
ISO Day of week
-----------------
7
Powodem, dla którego użyłem Sunday w tych przykładach, jest to, że podkreśla różnicę między isodow i dow .
Przykład 3:Dzień miesiąca
Gdy używasz sygnatury czasowej lub data wartości, day zwraca dzień miesiąca (1 – 31).
SELECT extract(
day from date '2020-12-27'
) AS "Day of month";
Wynik:
Day of month
--------------
27
Podczas korzystania z przedziału wartość, day pole powoduje zwrócenie liczby dni.
SELECT extract(
day from interval '32 weeks'
) AS "Number of days";
Wynik:
Number of days
----------------
224
Przykład 4:Dzień roku
Korzystanie z doy zwraca dzień roku (1 – 365/366).
SELECT extract(
doy from date '2020-12-27'
) AS "Day of year";
Wynik:
Day of year
-------------
362
Przykład 5:Funkcja date_part()
date_part() funkcja może być użyta zamiast extract() funkcjonować. Oto przykład.
SELECT date_part(
'doy', timestamp '2020-12-27'
) AS "Day of year";
Wynik:
Day of year
-------------
362