sql >> Databasteknik >  >> RDS >> Mysql

Hur man får år och månad från ett datum i MySQL

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.


  1. Hämtar länkad lista i MySQL-databas

  2. Hur konverterar man en sträng till Hex och vice versa?

  3. LAST_INSERT_ID() MySQL

  4. Hur Unicode() fungerar i SQLite