sql >> Databáze >  >> RDS >> PostgreSQL

Jak extrahovat číslo týdne z data v PostgreSQL

Problém:

Chcete získat číslo týdne hodnoty data nebo časového razítka v databázi PostgreSQL.

Příklad:

Naše databáze obsahuje tabulku s názvem children s údaji ve sloupcích id , first_name , last_name a birth_date .

id first_name last_name datum_narození
1 Angela Michelin 1. 1. 2018
2 Martin Jackson 26. 7. 2002
3 Justin Clark 26. 12. 2010
4 Frank Barker 2008-06-08

U každého dítěte uveďme jeho křestní jméno, příjmení a číslo týdne jeho data narození.

Řešení 1:

Použijeme DATE_PART() funkce. Zde je dotaz, který byste napsali:

SELECT first_name,
	 last_name,
       DATE_PART('week',birth_date) 
         AS  birth_week_number
FROM children;

Zde je výsledek dotazu:

first_name last_name číslo_týdnu narození
Angela Michelin 1
Martin Jackson 30
Justin Clark 51
Frank Barker 23

Diskuse:

Použijte DATE_PART() funkce pro získání čísla týdne z data v databázi PostgreSQL. Tato funkce má dva argumenty. První argument je část data, která se má načíst; používáme ‚týden‘, který vrací číslo týdne (např. „1“ pro první týden v lednu, první týden v roce). Můžete použít jinou část data, jako je den, rok, měsíc, hodina, minuta, doy (číslo dne v roce) atd. Více o částech data se dozvíte v dokumentaci PostgreSQL.

Druhý argument je název sloupce datového typu date/timestamp/timestamptz nebo výraz vracející jeden z těchto typů. (V našem příkladu se jedná o sloupec datum datový typ.)

Při použití s ​​částí data „týden“ funkce DATE_PART() vrátí číslo týdne jako celé číslo. V našem příkladu je zobrazeno číslo týdne pro datum narození daného dítěte; tento sloupec jsme pojmenovali birth_week_number . Martin Jackson se narodil 2002-07-26 , takže funkce vrátí „30“ jako číslo týdne jeho data narození.

DATE_PART() není pouze jedním ze způsobů, jak získat číslo týdne. Další možností je použít EXTRACT() funkce.

Řešení 2:

Použijeme EXTRACT() funkce. Zde je dotaz, který byste napsali:

SELECT first_name,
	 last_name,
       EXTRACT('week' FROM birth_date) 
         AS  birth_week_number
FROM children;

Tato funkce je podobná funkci DATE_PART() . Rozdíl je v syntaxi:místo čárky mezi názvem části data a sloupcem/výrazem je klíčové slovo FROM. Také EXTRACT() funkce je standardem SQL. Výsledek je pro obě funkce stejný.


  1. Obnovení smazaného 'root' uživatele a hesla pro MySQL

  2. Rozdíl mezi tabulkou DELETE a TRUNCATE na serveru SQL Server

  3. Operátor zřetězení řetězců v Oracle, Postgres a SQL Server

  4. Jak vytvořit uživatele s PSQL