PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak wyodrębnić numer tygodnia z daty w PostgreSQL?

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Normalizacja Unicode w PostgreSQL 13

  2. Problemy z poleceniem postgresql COPY z Railsami na innym serwerze

  3. Jak przełączać bazy danych w psql?

  4. Dzielenie danych z PostgreSQL 11

  5. Rails 3, ActiveRecord, PostgreSQL - polecenie .uniq nie działa?