Saltar al contenido

Filtrado de Fechas y Horas en SQL: BETWEEN, WHERE, Funciones y Ejemplos Avanzados

En este post profundizaremos en el mundo del filtrado de fechas y horas en SQL. Exploraremos dos métodos principales: el operador BETWEEN y la cláusula WHERE, y descubriremos cómo usarlos junto a funciones como CONVERT, CAST, DATEADD y DATEDIFF para obtener resultados aún más precisos y flexibles.

Aprenderás a utilizar funciones SQL como DATEADD, DATEDIFF, CONVERT y CAST para manipular fechas y horas con precisión. Además, descubrirás cómo comparar fechas con horas, filtrar por intervalos de tiempo ,comparar fechas en sql y manejar diferentes formatos de fechas.

¡Prepárate para convertirte en un maestro del filtrado de fechas y horas en SQL! Este artículo te ayudará a:

  • Optimizar tus consultas SQL para un mejor rendimiento.
  • Extraer información precisa de tus datos históricos.
  • Automatizar tareas relacionadas con el análisis de datos.

¡Empieza tu viaje hacia el dominio del filtrado avanzado de fechas y horas en SQL!

Índice

    1. BETWEEN: sql between rango de fechas

    El operador BETWEEN nos permite seleccionar registros que se encuentran dentro de un rango específico de fechas y horas, como si tuviéramos dos relojes marcando un intervalo.

    Sintaxis sql between fechas:

    SELECT *
    FROM tabla
    WHERE fecha_columna BETWEEN 'fecha_inicio' AND 'fecha_fin';
    

    Ejemplo sacar un rango de fechas :

    SELECT *
    FROM turnos_trabajo
    WHERE fecha_turno BETWEEN '2024-03-14 08:00:00' AND '2024-03-14 18:00:00';
    

    2. WHERE: consulta sql entre dos fechas

    La cláusula WHERE es aún más flexible que BETWEEN. Nos permite filtrar datos por una gran variedad de condiciones, incluyendo fechas, horas e incluso intervalos de tiempo.

    Sintaxis:

    SELECT *
    FROM tabla
    WHERE fecha_columna >= 'fecha_inicio' AND fecha_columna <= 'fecha_fin';
    

    Ejemplo sql entre dos fechas:

    SELECT *
    FROM reservas_restaurante
    WHERE fecha_reserva = '2024-03-14' AND hora_reserva BETWEEN '19:00:00' AND '20:00:00';
    

    3. Funciones para controlar el tiempo:

    CONVERT() y CAST(): Consulta SQL con fecha y hora

    Cambiar el formato de las fechas y horas a nuestro gusto.

    SELECT *
    FROM citas_medicas
    WHERE fecha_cita = CONVERT('2024-03-14 10:30:00', DATETIME);
    

    DATEADD() y DATEDIFF(): Consulta SQL con fecha y hora

    Sumar o restar días, horas, minutos o segundos a una fecha o hora específica.

    SELECT *
    FROM vuelos_internacionales
    WHERE fecha_salida >= DATEADD(HOUR, 2, '2024-03-14 15:00:00');
    
    SELECT *
    FROM llamadas_telefonicas
    WHERE DATEDIFF(MINUTE, fecha_inicio, fecha_fin) > 30;
    

    Comparacion del between y los demas operadores

    Tres métodos habituales para filtrar registros basados en fechas en SQL:

    1. Operadores aritméticos (>=, <=)
    2. Operador BETWEEN
    3. Funciones de fecha (DATEPART)

    Nuestro objetivo es ilustrar las similitudes y diferencias en cuanto a los resultados obtenidos y las consideraciones a tener en cuenta al elegir un método sobre otro y su rendimiento de memoria mostrando las ventas y desventajas.

    Filtrado de Fechas usando between , where , cast , convert  en sql
    • Ventajas:
      • Sintaxis clara y legible para definir rangos de fechas.
      • Facilidad de uso para filtrar por intervalos específicos.
    • Desventajas:
      • Menor flexibilidad en comparación con las funciones de fecha.
      • Posibilidad de errores si no se especifica correctamente el formato de las fechas.
    • Consumo de memoria similar al de los operadores aritméticos:
      • Al utilizar BETWEEN, se realiza una comparación interna con las fechas especificadas, lo que puede generar un consumo de memoria similar al de los operadores aritméticos.

    4. Ejemplos adicionales con NOT:

    – Consultar registros que no se encuentren dentro de un rango de fechas:

    SELECT *
    FROM pedidos
    WHERE fecha_pedido NOT BETWEEN '2023-01-01' AND '2023-12-31';
    

    – sacar registros que no contengan una hora específica:

    SELECT *
    FROM eventos_deportivos
    WHERE fecha_evento NOT LIKE '%10:00:00%';
    

    5. Ejemplos con INSERT, UPDATE y DELETE:

    – INSERT: Este caso estamos insertando fechas dentro de una columna , pero igualmente se puede combinar con un select utilizar between filtrar fechas

    – INSERT: Este caso estamos insertando fechas dentro de una columna , pero igualmente se puede combinar con un select utilizar between entre fechas para insertar un registro

    INSERT INTO reservas (fecha_reserva, hora_reserva, nombre_cliente)
    VALUES ('2024-03-15', '12:00:00', 'Juan García');
    

    – UPDATE:

    UPDATE turnos_trabajo
    SET fecha_turno = '2024-03-15 10:00:00'
    WHERE id_turno = 123;
    

    – DELETE:

    DELETE FROM citas_medicas
    WHERE fecha_cita < '2023-01-01';
    

    6. Resumen:

    En este post hemos explorado las diferentes opciones para filtrar fechas y horas en SQL, incluyendo el uso del operador BETWEEN, la cláusula WHERE y funciones como CONVERT, CAST, DATEADD y DATEDIFF. También hemos visto ejemplos con el operador NOT para filtrar registros que no cumplan con ciertas condiciones de fecha y hora. Finalmente, hemos incorporado ejemplos básicos de las instrucciones INSERT, UPDATE y DELETE que involucran fechas y horas.

    Recuerda:

    • La práctica te convertirá en un maestro del filtrado de fechas y horas en SQL.
    • Elegir el método correcto puede mejorar el rendimiento de tus consultas y la eficiencia de tus aplicaciones.

    7. ¡Hasta la próxima, amigos SQLeros!

    PD: No olvides compartir este artículo con tus colegas apasionados de SQL.