Problem:
Chcesz uzyskać rok i miesiąc z podanej daty w bazie danych MySQL.
Przykład:
Nasza baza danych zawiera tabelę o nazwie dates z danymi w kolumnach id i date .
| id | data |
|---|---|
| 1 | 2008-04-21 |
| 2 | 14.12.1987 |
Wyodrębnijmy year i month od daty.
Rozwiązanie 1:
SELECT EXTRACT(YEAR FROM date) AS year, EXTRACT(MONTH FROM date) AS month FROM dates;
Wynik:
| rok | miesiąc |
|---|---|
| 2008 | 4 |
| 1987 | 12 |
Dyskusja:
Aby uzyskać kolumny roku i miesiąca, użyj EXTRACT(part FROM date) funkcjonować. W tym rozwiązaniu argument part jest zastępowany przez YEAR i MONTH aby uzyskać year i month osobno, każdy w osobnej kolumnie.
Możesz dowiedzieć się więcej o EXTRACT() w oficjalnej dokumentacji MySQL.
Rozwiązanie 2:
SELECT EXTRACT(YEAR_MONTH FROM date) AS year_and_month FROM dates;
Wynik:
| rok_i_miesiąc |
|---|
| 200804 |
| 198712 |
Dyskusja:
To rozwiązanie działa dokładnie tak samo jak poprzednie, ale YEAR_MONTH służy do zebrania roku i miesiąca w jednej kolumnie, zamiast umieszczania ich osobno. Zauważ, że wartości roku i miesiąca nie są od siebie oddzielone.
Rozwiązanie 3:
SELECT YEAR(date) AS year, MONTH(date) AS month FROM dates;
Wynik:
| rok | miesiąc |
|---|---|
| 2008 | 4 |
| 1987 | 12 |
Dyskusja:
Tym razem YEAR() i MONTH() funkcje służą do tworzenia dwóch kolumn. YEAR() zwraca rok i MONTH() zwraca miesiąc jako liczbę.
Rozwiązanie 4:
SELECT YEAR(date) AS year, MONTHNAME(date) AS month FROM dates;
Wynik:
| rok | miesiąc |
|---|---|
| 2008 | Kwiecień |
| 1987 | grudzień |
Dyskusja:
Aby uzyskać nazwę miesiąca, użyj MONTHNAME() funkcjonować. Wynik wyświetla nazwę miesiąca zamiast numeru miesiąca.
Rozwiązanie 5:
SELECT DATE_FORMAT(date, '%Y-%m') AS year_and_month FROM dates;
Wynik:
| rok_i_miesiąc |
|---|
| 2008-04 |
| 1987-12 |
Dyskusja:
Użyj DATE_FORMAT() funkcja wyświetlania date wartości w określonym formacie. Zajmuje date jako pierwszy argument i łańcuch opisujący żądany format daty jako drugi argument. W naszym przypadku ciąg '%Y-%m ', %Y zwraca rok, ‘ - ” jest używany jako separator, a %m zwraca miesiąc numerycznie (można go zastąpić przez %M aby uzyskać nazwę miesiąca).
Możesz dowiedzieć się więcej o DATE_FORMAT() w oficjalnej dokumentacji MySQL.