W PostgreSQL możesz użyć extract()
funkcja, aby uzyskać numer tygodnia z daty.
Możesz także użyć date_part()
funkcja, aby zrobić to samo.
Przykład 1:Funkcja extract()
Oto przykład użycia extract()
funkcja wyodrębniania tygodnia z daty.
SELECT extract(week from date '2020-12-27') AS "Week Number";
Wynik:
Week Number ------------- 52
Przykład 2:Funkcja date_part()
Oto jak zrobić to samo za pomocą date_part()
funkcja.
SELECT date_part('week', date '2020-12-27') AS "Week Number";
Wynik:
Week Number ------------- 52
Przykład 3:Informacje o systemie numerowania tygodni ISO
Jeśli uzyskasz wyniki, których nie oczekiwałeś, może to być spowodowane sposobem zdefiniowania numeracji tygodni ISO.
Tygodnie ISO zaczynają się w poniedziałki, a pierwszy tydzień roku zawiera 4 stycznia tego roku. Dlatego możliwe jest, że daty na początku stycznia będą częścią 52. lub 53. tygodnia poprzedniego roku, a daty pod koniec grudnia będą częścią pierwszego tygodnia następnego roku.
Przykład:
SELECT extract(week from date '2021-01-03') AS "2021-01-03", extract(week from date '2021-01-04') AS "2021-01-04";
Wynik:
2021-01-03 | 2021-01-04 ------------+------------ 53 | 1
W tym przypadku 3 stycznia 2021 r. jest nadal częścią ostatniego tygodnia 2020 r. Pierwszy tydzień 2021 r. zaczyna się dopiero 4 stycznia.
Poniżej znajduje się kolejny przykład, który pokazuje datę na koniec roku będącą częścią pierwszego tygodnia następnego roku.
SELECT extract(week from date '2024-12-29') AS "2024-12-29", extract(week from date '2024-12-30') AS "2024-12-30";
Wynik:
2024-12-29 | 2024-12-30 ------------+------------ 52 | 1
W tym przypadku 29 grudnia 2024 jest częścią ostatniego tygodnia 2024, ale jak tylko dojdziemy do 30 grudnia, jesteśmy w pierwszym tygodniu 2025.