| Gestión de fechas y horas en MySQL |
Añadir intervalos a fechas
Es esta una opción muy útil para gestionar multitud de cuestiones en las que es preciso añadir o sustraer un determinado periodo de tiempo a una fecha. Los ejemplos están darrollados presentando la fehca actual mediante la función NOW() su valor aparecerá en azul y los resultados de aplicar los intervalos positivos (en rojo) y negativos (en magenta).
Funciones de fecha en MySQL
| Descomposición de fechas y horas | |||
| Sintaxis | Descripción | Código fuente | Resultado |
| YEAR(fecha) | Extrae el año de la fecha contenida en el campo consultado | SELECT YEAR(Now()) |
2008 |
| MONTH(fecha) | Extrae el número del mes de la fecha contenida en el campo consultado | SELECT MONTH(Now()) |
8 |
| DAYOFMONTH(fecha) | Extrae el día de la fecha contenida en el campo consultado | SELECT DAYOFMONTH(Now()) |
21 |
| HOUR(fecha) | Extrae la hora -en el rango 0 a 23-del campo consultado. Si el campo consultado no contiene hora (solo fecha) devuelve cero | SELECT HOUR(Now()) |
22 |
| MINUTE(fecha) | Extrae los minutos -en el rango 0 a 59-del campo consultado. Si el campo consultado no contiene hora (solo fecha) devuelve cero | SELECT MINUTE(Now()) |
56 |
| SECOND(fecha) | Extrae los segundos -en el rango 0 a 59-del campo consultado. Si el campo consultado no contiene hora (solo fecha) devuelve cer | SELECT SECOND(Now()) |
18 |
| MONTHNAME(fecha) | Extrae el nombre del mes (en inglés) de la fecha contenida en el campo consultado | SELECT MONTHNAME(Now()) |
August |
| DAYNAME(fecha) | Extrae el nombre del día de la semana (en inglés) de la fecha contenida en el campo consultado | SELECT DAYNAME(Now()) |
Thursday |
| DAYOFWEEK(fecha) | Extrae el número de día de la semana (rango 1 a 7 y comenzando por el domingo) de la fecha contenida en el campo consultado | SELECT DAYOFWEEK(Now()) |
5 |
| WEEKDAY(fecha) | Extrae el número de día de la semana (rango 0 a 6 , comenzando por el Lunes) de la fecha contenida en el campo consultado | SELECT WEEKDAY(Now()) |
3 |
| QUARTER(fecha) | Extrae el en número de trimestre de la fecha contenida en el campo consultado | SELECT QUARTER(Now()) |
3 |
| TIME_TO_SEC(fecha) | Convierte en segundos un valor expresado en hh:mm:ss | SELECT TIME_TO_SEC(CURTIME()) |
82578 |
| SEC_TO_TIME(segundos) | Convierte un número de segundos en hh:mm:ss | SELECT SEC_TO_TIME(27542)) |
07:39:02 |
| TO_DAYS(fecha) | Devuelve los días transcurridos desde el 1 de Enero del año 0 hasta la fecha. No hace la corrección gregoriana de 1582 y requiere que la fecha introducida sea posterior al 1-1-1000 | SELECT TO_DAYS(Now()) |
733640 |
| FROM_DAYS(dias) | Convierte un número de días (ha de ser mayor de 365) en una fecha contada a partir del 1 de Enero del año 0. Para fechas anteriores a Octubre de 1582 no hace la corrección de los 10 días descontados en el ajusta del calendario Gregoriano |
SELECT FROM_DAYS(1000000) |
2737-11-28 |
| FROM_UNIXTIME(segundos) | Convierte los segundos en fecha UNIX. Es decir calcula la fecha cuya diferencia de tiempo con el 01-01-1970 es la que se incluye como segundos en la función | SELECT FROM_UNIXTIME(100000000) |
1973-03-03 10:46:40 |
| WEEK(fecha,0) | Extrae el número de semana del año en un rango de 0-53 considerando que la semana cero empieza en domingo y que la semana cero comienza a partir del primer domingo del año | SELECT WEEK(Now(),0) |
33 |
| WEEK(fecha,1) | Extrae el número de semana del año en un rango de 0-53 considerando que la semana cero empieza en Lunes y que la semana cero ha de tener más de tres días dentro del año | SELECT WEEK(Now(),1) |
34 |
| WEEK(fecha,2) | Extrae el número de semana del año en un rango de 1-53 considerando que la semana cero empieza en domingo y que la semana cero comienza a partir del primer domingo del año | SELECT WEEK(Now(),2) |
33 |
| WEEK(fecha,3) | Extrae el número de semana del año en un rango de 1-53 considerando que la semana cero empieza en Lunes y que la semana cero ha de tener más de tres días dentro del año | SELECT WEEK(Now(),3) |
34 |
| WEEK(fecha,4)* | Extrae el número de semana del año en un rango de 0-53 considerando que la semana cero empieza en Lunes y que la semana cero ha de tener más de tres días dentro del año | SELECT WEEK(Now(),4) |
34 |
| WEEK(fecha,5) | Extrae el número de semana del año en un rango de 0-53 considerando que la semana cero empieza en Lunes y que la semana uno comienza a partir del primer lunes del año | SELECT WEEK(Now(),5) |
33 |
| WEEK(fecha,6) | Extrae el número de semana del año en un rango de 1-53 considerando que la semana cero empieza en Lunes y que la primera ha de tenr al menos tres dias dentro del año | SELECT WEEK(Now(),6) |
34 |
| WEEK(fecha,7) | Extrae el número de semana del año en un rango de 1-53 considerando que la semana cero empieza en Lunes y que la semana uno comienza a partir del primer Lunes del año | SELECT WEEK(Now(),7) |
33 |
Acotaciones sobre el manejo de intervalos de fechas
| Ver código fuente | Ejecutar resumen |