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.
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 operadorBETWEEN
.