Problem:
Chcesz uzyskać numer tygodnia daty lub znacznika czasu w bazie danych PostgreSQL.
Przykład:
Nasza baza danych zawiera tabelę o nazwie children
z danymi w kolumnach id
, first_name
, last_name
i birth_date
.
id | imię | nazwisko | data_urodzenia |
---|---|---|---|
1 | Angela | Michelin | 2018-01-01 |
2 | Marcin | Jackson | 2002-07-26 |
3 | Justin | Clark | 26.12.2010 |
4 | Frank | Kerka | 2008-06-08 |
Dla każdego dziecka zdobądźmy jego imię, nazwisko i numer tygodnia daty urodzenia.
Rozwiązanie 1:
Użyjemy DATE_PART()
funkcjonować. Oto zapytanie, które możesz napisać:
SELECT first_name, last_name, DATE_PART('week',birth_date) AS birth_week_number FROM children;
Oto wynik zapytania:
imię | nazwisko | birth_week_number |
---|---|---|
Angela | Michelin | 1 |
Marcin | Jackson | 30 |
Justin | Clark | 51 |
Frank | Krzyk | 23 |
Dyskusja:
Użyj DATE_PART()
funkcja do pobrania numeru tygodnia z daty w bazie danych PostgreSQL. Ta funkcja przyjmuje dwa argumenty. Pierwszy argument to część daty do pobrania; używamy ‘tydzień’, który zwraca numer tygodnia (np. „1” dla pierwszego tygodnia stycznia, pierwszego tygodnia roku). Możesz użyć innej części daty, takiej jak dzień, rok, miesiąc, godzina, minuta, doy (numer dnia w roku) itp. Więcej informacji o częściach daty znajdziesz w dokumentacji PostgreSQL.
Drugim argumentem jest nazwa kolumny typu data/timestamp/timestamptz lub wyrażenie zwracające jeden z tych typów. (W naszym przykładzie jest to kolumna z datą typ danych.)
W przypadku użycia z częścią daty tygodnia, funkcja DATE_PART()
zwraca numer tygodnia jako liczbę całkowitą. W naszym przykładzie wyświetlany jest numer tygodnia dla daty urodzenia danego dziecka; nazwaliśmy tę kolumnę birth_week_number
. Martin Jackson urodził się 2002-07-26
, więc funkcja zwraca „30” jako numer tygodnia jego daty urodzin.
DATE_PART()
to nie tylko jeden sposób na uzyskanie numeru tygodnia. Inną opcją jest użycie EXTRACT()
funkcja.
Rozwiązanie 2:
Użyjemy EXTRACT()
funkcjonować. Oto zapytanie, które możesz napisać:
SELECT first_name, last_name, EXTRACT('week' FROM birth_date) AS birth_week_number FROM children;
Ta funkcja jest podobna do DATE_PART()
. Różnica polega na składni:zamiast przecinka między nazwą części daty a kolumną/wyrażeniem znajduje się słowo kluczowe FROM. Ponadto EXTRACT()
funkcja jest standardem SQL. Wynik jest taki sam dla obu funkcji.