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ý.