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.