Consultas con fechas y horas en MySQL

En este artículo vamos a explicar la manera de hacer consultas sobre fechas y horas en una base de datos MySQL. La manipulación de fechas es una parte fundamental en las consultas sobre bases de datos y MySQL ofrece diversas funciones y capacidades basadas en ellas. En este artículo exploraremos cómo manipular las fechas y horas en nuestras consultas, obtener marcas de tiempo, realizar operaciones de suma y obtener consultas por rangos de fechas específicos. Está relacionado con el artículo trabajar con fechas en PHP y MySQL explicado anteriormente.

Obtener fecha y hora Timestamp en MySQL

MySQL ofrece la función UNIX_TIMESTAMP() que permite obtener la marca de tiempo UNIX (timestamp) a partir de una fecha dada. Esta función toma una fecha en formato 'YYYY-MM-DD HH:MI:SS' y devuelve la marca de tiempo UNIX correspondiente:

SELECT UNIX_TIMESTAMP('2023-08-18 15:30:00') AS marca_de_tiempo;

Una vez tenemos esta marca de tiempo podemos hacer operaciones de tipo timestamp con ella.

Extraer fecha y hora en consultas MySQL

Para obtener componentes específicos de una fecha o hora, como año, mes, día, hora, minutos y segundos, MySQL proporciona funciones de extracción. Algunas consultas de ejemplo son:

-- Obtener año de una fecha
SELECT YEAR('2023-08-18 15:30:00') AS anio;

-- Obtener mes de una fecha
SELECT MONTH('2023-08-18 15:30:00') AS mes;

-- Obtener día de una fecha
SELECT DAY('2023-08-18 15:30:00') AS dia;

-- Obtener hora de una hora
SELECT HOUR('2023-08-18 15:30:00') AS hora;

-- Obtener minutos de una hora
SELECT MINUTE('2023-08-18 15:30:00') AS minutos;

-- Obtener segundos de una hora
SELECT SECOND('2023-08-18 15:30:00') AS segundos;

Sumar fechas y horas en consultas MySQL

MySQL tambien permite realizar operaciones aritméticas en fechas y horas utilizando funciones como DATE_ADD() y DATE_SUB(). Se pueden sumar o restar intervalos de tiempo específicos, como años, meses, días, horas y minutos, a una fecha dada. Por ejemplo:

-- Sumar 2 años y 3 meses a una fecha
SELECT DATE_ADD('2023-08-18', INTERVAL 2 YEAR + 3 MONTH) AS nueva_fecha;

-- Restar 7 días y 4 horas a una fecha y hora
SELECT DATE_SUB('2023-08-18 15:30:00', INTERVAL 7 DAY + 4 HOUR) AS nueva_fecha_hora;

Todas estas operaciones son interesantes y útiles para trabajar con fechas y horas en MySQL sin tener que modificar los datos originales en la base de datos.

Consultas por rangos de fecha en MySQL

La capacidad de obtener consultas por rangos de fechas es esencial en muchas aplicaciones. MySQL proporciona funciones que permiten filtrar datos dentro de un rango de fechas específico:

-- Obtener registros dentro de un rango de fechas (año)
SELECT * FROM tabla WHERE YEAR(fecha_columna) = 2023;

-- Obtener registros dentro de un rango de fechas (mes)
SELECT * FROM tabla WHERE YEAR(fecha_columna) = 2023 AND MONTH(fecha_columna) = 8;

-- Obtener registros dentro de un rango de fechas (día)
SELECT * FROM tabla WHERE fecha_columna BETWEEN '2023-08-01' AND '2023-08-31';

-- Obtener registros dentro de un rango de horas
SELECT * FROM tabla WHERE HOUR(hora_columna) BETWEEN 9 AND 17;

-- Obtener registros dentro de un rango de minutos
SELECT * FROM tabla WHERE MINUTE(hora_columna) BETWEEN 0 AND 30;

Conclusión

Trabajar con fechas y horas en consultas MySQL es una habilidad fundamental para cualquier desarrollador que maneje bases de datos relacionales. Desde la obtención de marcas de tiempo timestamp, hasta la realización de operaciones de suma o la obtención de consultas por rangos de fechas específicos, MySQL ofrece una variedad de funciones para manipular y consultar datos de fecha y hora.

En este artículo solo hemos mencionado los fundamentos para trabajar con fechas y horas en consultas MySQL, pero con esta base estaremos mejor preparados para aprovechar al máximo las capacidades que ofrece MySQL y abordar los desafíos relacionados con fechas y horas proyectos de desarrollo.

Espero que este artículo sea de vuestro interés!

Deja un comentario