Problema:
Desea obtener el año y el mes de una fecha determinada en una base de datos MySQL.
Ejemplo:
Nuestra base de datos tiene una tabla llamada dates
con datos en las columnas id
y date
.
id | fecha |
---|---|
1 | 2008-04-21 |
2 | 1987-12-14 |
Extraigamos el year
y el month
a partir de la fecha.
Solución 1:
SELECT EXTRACT(YEAR FROM date) AS year, EXTRACT(MONTH FROM date) AS month FROM dates;
El resultado es:
año | mes |
---|---|
2008 | 4 |
1987 | 12 |
Discusión:
Para obtener las columnas de año y mes, use EXTRACT(part FROM date)
función. En esta solución, el argumento de la parte se reemplaza por YEAR
y MONTH
para obtener el year
y el month
por separado, cada uno en su propia columna.
Puede obtener más información sobre EXTRACT()
en la documentación oficial de MySQL.
Solución 2:
SELECT EXTRACT(YEAR_MONTH FROM date) AS year_and_month FROM dates;
El resultado es:
año_y_mes |
---|
200804 |
198712 |
Discusión:
Esta solución funciona exactamente igual que la anterior, pero YEAR_MONTH
se usa para juntar el año y el mes en una columna en lugar de juntarlos por separado. Tenga en cuenta que los valores del año y el mes no están separados entre sí.
Solución 3:
SELECT YEAR(date) AS year, MONTH(date) AS month FROM dates;
El resultado es:
año | mes |
---|---|
2008 | 4 |
1987 | 12 |
Discusión:
Esta vez, el YEAR()
y el MONTH()
Las funciones se utilizan para crear dos columnas. YEAR()
devuelve el año y MONTH()
devuelve el mes como un número.
Solución 4:
SELECT YEAR(date) AS year, MONTHNAME(date) AS month FROM dates;
El resultado es:
año | mes |
---|---|
2008 | abril |
1987 | diciembre |
Discusión:
Para obtener el nombre del mes, use MONTHNAME()
función. El resultado muestra el nombre del mes en lugar del número del mes.
Solución 5:
SELECT DATE_FORMAT(date, '%Y-%m') AS year_and_month FROM dates;
El resultado es:
año_y_mes |
---|
2008-04 |
1987-12 |
Discusión:
Usa el DATE_FORMAT()
función para mostrar date
valores en un formato específico. Toma la date
como primer argumento y una cadena que describe el formato de fecha deseado como segundo argumento. En nuestro caso, la cadena '%Y-%m
', %Y
devuelve el año, ‘ -
’ se usa como separador, y %m
devuelve el mes numéricamente (se puede reemplazar por %M
para obtener el nombre del mes).
Puede obtener más información sobre DATE_FORMAT()
en la documentación oficial de MySQL.