sql >> Database teknologi >  >> RDS >> Mysql

Sådan får du året og måneden fra en dato i MySQL

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.


  1. Sådan overføres et array til en lagret SQL Server-procedure

  2. Hvad er forskellen mellem Scope_Identity(), Identity(), @@Identity og Ident_Current()?

  3. Hent TOP 10 rækker uden at bruge TOP eller LIMIT? – Ugens interviewspørgsmål #247

  4. Aktivering af to-faktor-godkendelse for ScaleGrid DBaaS