Problem:
Du vill få år och månad från ett givet datum i en MySQL-databas.
Exempel:
Vår databas har en tabell som heter dates
med data i kolumnerna id
och date
.
id | datum |
---|---|
1 | 2008-04-21 |
2 | 1987-12-14 |
Låt oss extrahera year
och month
från datumet.
Lösning 1:
SELECT EXTRACT(YEAR FROM date) AS year, EXTRACT(MONTH FROM date) AS month FROM dates;
Resultatet är:
år | månad |
---|---|
2008 | 4 |
1987 | 12 |
Diskussion:
För att få år och månad kolumner, använd EXTRACT(part FROM date)
fungera. I den här lösningen ersätts part-argumentet med YEAR
och MONTH
för att få year
och month
separat, var och en i sin egen kolumn.
Du kan lära dig mer om EXTRACT()
i den officiella MySQL-dokumentationen.
Lösning 2:
SELECT EXTRACT(YEAR_MONTH FROM date) AS year_and_month FROM dates;
Resultatet är:
år_och_månad |
---|
200804 |
198712 |
Diskussion:
Den här lösningen fungerar precis som den tidigare, men YEAR_MONTH
används för att få året och månaden samman i en kolumn istället för att få dem separat. Observera att års- och månadsvärdena inte är åtskilda från varandra.
Lösning 3:
SELECT YEAR(date) AS year, MONTH(date) AS month FROM dates;
Resultatet är:
år | månad |
---|---|
2008 | 4 |
1987 | 12 |
Diskussion:
Den här gången, YEAR()
och MONTH()
funktioner används för att skapa två kolumner. YEAR()
returnerar året och MONTH()
returnerar månaden som ett tal.
Lösning 4:
SELECT YEAR(date) AS year, MONTHNAME(date) AS month FROM dates;
Resultatet är:
år | månad |
---|---|
2008 | April |
1987 | December |
Diskussion:
För att få månadens namn, använd MONTHNAME()
fungera. Resultatet visar månadens namn istället för månadsnumret.
Lösning 5:
SELECT DATE_FORMAT(date, '%Y-%m') AS year_and_month FROM dates;
Resultatet är:
år_och_månad |
---|
2008-04 |
1987-12 |
Diskussion:
Använd DATE_FORMAT()
funktion för att visa date
värden i ett specifikt format. Det tar date
som det första argumentet och en sträng som beskriver det önskade datumformatet som det andra argumentet. I vårt fall är strängen '%Y-%m
', %Y
returnerar året, ‘ -
’ används som en separator och %m
returnerar månaden numeriskt (den kan ersättas med %M
för att få månadsnamnet).
Du kan lära dig mer om DATE_FORMAT()
i den officiella MySQL-dokumentationen.