Проблем:
Искате да получите годината и месеца от дадена дата в база данни на 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.