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