Filtros · rangos inclusivos

BETWEEN

BETWEEN comprueba si un valor está dentro de un intervalo inclusivo: el límite inicial y el final también pueden coincidir.

Lectura: 5–7 minEjemplo comprobadoPráctica con pistas
Contenido de esta guía

Qué significa BETWEEN

BETWEEN expresa un intervalo cerrado. La condición valor BETWEEN minimo AND maximo equivale, para comparaciones ordinarias, a exigir valor >= minimo y valor <= maximo.

Los dos extremos están incluidos. Esta característica resulta útil para números y fechas, pero puede provocar errores si se olvida al contar rangos consecutivos.

Sintaxis y límites

SQL
SELECT columnas
FROM tabla
WHERE expresion BETWEEN limite_inferior AND limite_superior;

Escribe primero el límite menor y después el mayor. No presupongas que el motor los intercambiará. Si alguno de los valores comparados es NULL, la condición no es verdadera.

Ejemplo guiado: pedidos de un periodo

SQL
SELECT id, fecha, estado, total
FROM pedidos
WHERE fecha BETWEEN '2025-06-01' AND '2025-06-10'
ORDER BY fecha, id;
Resultado comprobado: ambos días límite están incluidos
idfechaestadototal
1112025-06-01pendiente249,0
1122025-06-03enviado54,0
1132025-06-06enviado98,0
1142025-06-08pendiente203,9
1152025-06-10enviado24,0

Fechas frente a marcas de tiempo

El ejemplo funciona porque fecha guarda días completos en formato ISO. Si la columna incluye hora, BETWEEN '2025-06-01' AND '2025-06-10' puede interpretar el segundo límite como el inicio del 10 de junio y excluir horas posteriores de ese día.

Para periodos de tiempo suele ser más robusto usar un intervalo semiabierto: incluir el inicio y excluir el comienzo del periodo siguiente.

SQL
WHERE creado_en >= '2025-06-01'
  AND creado_en <  '2025-07-01'

Esta forma cubre todo junio sin tener que inventar una «última hora» del mes.

Errores frecuentes

Creer que el límite final está excluido

BETWEEN 50 AND 100 acepta 50 y 100. Para excluirlos, escribe comparaciones con > y <.

Comparar fechas almacenadas como texto no ordenable

Formatos como «10/06/2025» no mantienen el orden cronológico al compararse como texto. Utiliza tipos de fecha del motor o un formato consistente y documentado.

Práctica guiada

Básica · rangos numéricos

Productos entre 50 y 100 euros

Muestra nombre y precio de los productos cuyo precio esté entre 50 y 100, incluidos ambos límites. Ordena por precio y, en caso de empate, por nombre.

Compatibilidad entre motores

El carácter inclusivo de BETWEEN es portable. Lo que cambia es el sistema de tipos, la interpretación de literales de fecha y la conversión implícita. Utiliza parámetros con tipos adecuados y comprueba la zona horaria cuando trabajes con instantes.

Qué debes recordar

  • BETWEEN incluye los dos límites.
  • El límite menor debe escribirse primero.
  • Con marcas de tiempo, suele convenir un intervalo semiabierto.
  • Los tipos y formatos de fecha deben ser coherentes.

Conceptos relacionados

Fuentes técnicas consultadas

Para construir un filtro completo con horas y probar sus límites, sigue la guía de cómo filtrar entre dos fechas en SQL.