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.