Проблем:
Искате да получите годината и месеца от дадена дата в база данни на MySQL.
Пример:
Нашата база данни има таблица с име dates
с данни в колоните id
и date
.
id | дата |
---|---|
1 | 21.04.2008 |
2 | 14-12-1987 г. |
Нека извлечем year
и month
от датата.
Решение 1:
SELECT EXTRACT(YEAR FROM date) AS year, EXTRACT(MONTH FROM date) AS month FROM dates;
Резултатът е:
година | месец |
---|---|
2008 | 4 |
1987 | 12 |
Дискусия:
За да получите колоните за годината и месеца, използвайте EXTRACT(part FROM date)
функция. В това решение аргументът част се заменя с YEAR
и MONTH
за да получите year
и month
поотделно, всеки в своя колона.
Можете да научите повече за EXTRACT()
в официалната документация на MySQL.
Решение 2:
SELECT EXTRACT(YEAR_MONTH FROM date) AS year_and_month FROM dates;
Резултатът е:
година_и_месец |
---|
200804 |
198712 |
Дискусия:
Това решение работи точно като предишното, но YEAR_MONTH
се използва за събиране на годината и месеца в една колона, вместо да ги получава отделно. Обърнете внимание, че стойностите на годината и месеца не са отделени една от друга.
Решение 3:
SELECT YEAR(date) AS year, MONTH(date) AS month FROM dates;
Резултатът е:
година | месец |
---|---|
2008 | 4 |
1987 | 12 |
Дискусия:
Този път YEAR()
и MONTH()
функциите се използват за създаване на две колони. YEAR()
връща годината и MONTH()
връща месеца като число.
Решение 4:
SELECT YEAR(date) AS year, MONTHNAME(date) AS month FROM dates;
Резултатът е:
година | месец |
---|---|
2008 | Април |
1987 | Декември |
Дискусия:
За да получите името на месеца, използвайте MONTHNAME()
функция. Резултатът показва името на месеца вместо номера на месеца.
Решение 5:
SELECT DATE_FORMAT(date, '%Y-%m') AS year_and_month FROM dates;
Резултатът е:
година_и_месец |
---|
2008-04 |
1987-12 |
Дискусия:
Използвайте DATE_FORMAT()
функция за показване на date
стойности в определен формат. Отнема date
като първи аргумент и низ, описващ желания формат на датата като втори аргумент. В нашия случай низът '%Y-%m
', %Y
връща годината, ‘ -
’ се използва като разделител и %m
връща месеца числово (може да бъде заменен с %M
за да получите името на месеца).
Можете да научите повече за DATE_FORMAT()
в официалната документация на MySQL.