Problem:
Du ønsker at få året og måneden fra en given dato i en MySQL-database.
Eksempel:
Vores database har en tabel med navnet dates
med data i kolonnerne id
og date
.
id | dato |
---|---|
1 | 2008-04-21 |
2 | 1987-12-14 |
Lad os udtrække year
og month
fra datoen.
Løsning 1:
SELECT EXTRACT(YEAR FROM date) AS year, EXTRACT(MONTH FROM date) AS month FROM dates;
Resultatet er:
år | måned |
---|---|
2008 | 4 |
1987 | 12 |
Diskussion:
For at få årstal og månedskolonner skal du bruge EXTRACT(part FROM date)
fungere. I denne løsning er part-argumentet erstattet af YEAR
og MONTH
for at få year
og month
separat, hver i sin egen kolonne.
Du kan lære mere om EXTRACT()
i den officielle MySQL-dokumentation.
Løsning 2:
SELECT EXTRACT(YEAR_MONTH FROM date) AS year_and_month FROM dates;
Resultatet er:
år_og_måned |
---|
200804 |
198712 |
Diskussion:
Denne løsning fungerer nøjagtigt som den forrige, men YEAR_MONTH
bruges til at få året og måneden samlet i én kolonne i stedet for at få dem hver for sig. Bemærk, at værdierne for året og måneden ikke er adskilt fra hinanden.
Løsning 3:
SELECT YEAR(date) AS year, MONTH(date) AS month FROM dates;
Resultatet er:
år | måned |
---|---|
2008 | 4 |
1987 | 12 |
Diskussion:
Denne gang er YEAR()
og MONTH()
funktioner bruges til at oprette to kolonner. YEAR()
returnerer året og MONTH()
returnerer måneden som et tal.
Løsning 4:
SELECT YEAR(date) AS year, MONTHNAME(date) AS month FROM dates;
Resultatet er:
år | måned |
---|---|
2008 | April |
1987 | December |
Diskussion:
For at få navnet på måneden, brug MONTHNAME()
fungere. Resultatet viser månedens navn i stedet for månedsnummeret.
Løsning 5:
SELECT DATE_FORMAT(date, '%Y-%m') AS year_and_month FROM dates;
Resultatet er:
år_og_måned |
---|
2008-04 |
1987-12 |
Diskussion:
Brug DATE_FORMAT()
funktion til at vise date
værdier i et bestemt format. Det tager date
som det første argument og en streng, der beskriver det ønskede datoformat som det andet argument. I vores tilfælde er strengen '%Y-%m
', %Y
returnerer året, ‘ -
' bruges som en separator, og %m
returnerer måneden numerisk (den kan erstattes af %M
). for at få månedens navn).
Du kan lære mere om DATE_FORMAT()
i den officielle MySQL-dokumentation.