Saltar a contenido

El operador BETWEEN permite comprobar si un valor se encuentra dentro de un rango de valores.

La sintaxis básica del operador BETWEEN es la siguiente:

value BETWEEN low AND high;

Si el valor es mayor o igual que el valor bajo y menor o igual que el valor alto, el operador BETWEEN devuelve true; en caso contrario, devuelve false.

Puede reescribir el operador BETWEEN utilizando los operadores mayor que o igual ( >=) y menor que o igual a ( <=) y el operador lógico AND:

value >= low AND value <= high

Si desea comprobar si un valor está fuera de un rango específico, puede utilizar el operador NOT BETWEEN de la siguiente manera:

value NOT BETWEEN low AND high

La siguiente expresión es equivalente a la expresión que utiliza los operadores NOT BETWEEN:

value < low OR value > high

En la práctica, a menudo se utiliza el operador BETWEEN en la cláusula WHERE de las sentencias SELECT, INSERT, UPDATE,y DELETE.

Ejemplos del operador BETWEEN de PostgreSQL

Echemos un vistazo a la tabla payment de la base de datos de ejemplo.

payment table

Uso del operador BETWEEN de PostgreSQL con números

La siguiente consulta utiliza el operador BETWEEN para recuperar pagos con payment_id entre 17510 y 17505:

SELECT 
  payment_id, 
  amount 
FROM 
  payment 
WHERE 
  payment_id BETWEEN 17503 AND 17505 
ORDER BY 
  payment_id;

Salida:

 payment_id | amount
------------+--------
      17503 |   7.99
      17504 |   1.99
      17505 |   7.99
(3 rows)

Uso del ejemplo NOT BETWEEN de PostgreSQL

El siguiente ejemplo utiliza el operador NOT BETWEEN para encontrar pagos cuyo payment_id no esté entre 17510 y 17505:

SELECT 
  payment_id, 
  amount 
FROM 
  payment 
WHERE 
  payment_id NOT BETWEEN 17503 AND 17505 
ORDER BY 
  payment_id;

Salida:

payment_id | amount
------------+--------
      17506 |   2.99
      17507 |   7.99
      17508 |   5.99
      17509 |   5.99
      17510 |   5.99
...

Usando el BETWEEN de PostgreSQL con un rango de fechas

Si desea comprobar un valor con respecto a un intervalo de fechas, utilice la fecha literal en formato ISO 8601, que es YYYY-MM-DD.

El siguiente ejemplo utiliza el operador BETWEEN para buscar pagos cuyas fechas de pago estén comprendidas entre el 2007-02-14 y el 2007-02-20 y cuyo importe sea superior a 10:

SELECT 
  payment_id, 
  amount, 
  payment_date 
FROM 
  payment 
WHERE 
  payment_date BETWEEN '2007-02-15' AND '2007-02-20' 
  AND amount > 10 
ORDER BY 
  payment_date;

Salida:

 customer_id | payment_id | amount |        payment_date
-------------+------------+--------+----------------------------
          33 |      18640 |  10.99 | 2007-02-15 08:14:59.996577
         544 |      18272 |  10.99 | 2007-02-15 16:59:12.996577
         516 |      18175 |  10.99 | 2007-02-16 13:20:28.996577
         572 |      18367 |  10.99 | 2007-02-17 02:33:38.996577
         260 |      19481 |  10.99 | 2007-02-17 16:37:30.996577
         477 |      18035 |  10.99 | 2007-02-18 07:01:49.996577
         221 |      19336 |  10.99 | 2007-02-19 09:18:28.996577
(7 rows)

Resumen

  • Utilice el operador BETWEEN para comprobar si un valor se encuentra dentro de un rango determinado.
  • Utilice el operador NOT BETWEEN para negar el operador BETWEEN.