Problém:
Chcete získat rok a měsíc od daného data v databázi MySQL.
Příklad:
Naše databáze obsahuje tabulku s názvem dates
s údaji ve sloupcích id
a date
.
id | datum |
---|---|
1 | 21. 4. 2008 |
2 | 14. 12. 1987 |
Pojďme extrahovat year
a month
od data.
Řešení 1:
SELECT EXTRACT(YEAR FROM date) AS year, EXTRACT(MONTH FROM date) AS month FROM dates;
Výsledek je:
rok | měsíc |
---|---|
2008 | 4 |
1987 | 12 |
Diskuse:
Chcete-li získat sloupce roku a měsíce, použijte EXTRACT(part FROM date)
funkce. V tomto řešení je argument části nahrazen YEAR
a MONTH
získat year
a month
samostatně, každý ve svém vlastním sloupci.
Můžete se dozvědět více o EXTRACT()
v oficiální dokumentaci MySQL.
Řešení 2:
SELECT EXTRACT(YEAR_MONTH FROM date) AS year_and_month FROM dates;
Výsledek je:
year_and_month |
---|
200804 |
198712 |
Diskuse:
Toto řešení funguje úplně stejně jako předchozí, ale YEAR_MONTH
se používá k tomu, aby se rok a měsíc dostaly dohromady v jednom sloupci, místo aby byly odděleny. Všimněte si, že hodnoty roku a měsíce nejsou od sebe odděleny.
Řešení 3:
SELECT YEAR(date) AS year, MONTH(date) AS month FROM dates;
Výsledek je:
rok | měsíc |
---|---|
2008 | 4 |
1987 | 12 |
Diskuse:
Tentokrát YEAR()
a MONTH()
funkce slouží k vytvoření dvou sloupců. YEAR()
vrátí rok a MONTH()
vrátí měsíc jako číslo.
Řešení 4:
SELECT YEAR(date) AS year, MONTHNAME(date) AS month FROM dates;
Výsledek je:
rok | měsíc |
---|---|
2008 | Duben |
1987 | Prosinec |
Diskuse:
Chcete-li získat název měsíce, použijte MONTHNAME()
funkce. Ve výsledku se místo čísla měsíce zobrazí název měsíce.
Řešení 5:
SELECT DATE_FORMAT(date, '%Y-%m') AS year_and_month FROM dates;
Výsledek je:
year_and_month |
---|
2008-04 |
1987-12 |
Diskuse:
Použijte DATE_FORMAT()
funkce pro zobrazení date
hodnoty v určitém formátu. Trvá to date
jako první argument a řetězec popisující požadovaný formát data jako druhý argument. V našem případě řetězec '%Y-%m
', %Y
vrátí rok, ‘ -
’ se používá jako oddělovač a %m
vrátí měsíc číselně (lze jej nahradit %M
získat název měsíce).
Můžete se dozvědět více o DATE_FORMAT()
v oficiální dokumentaci MySQL.