条件之间的倍数 SQL
Multiple between condition SQL
我正在执行一个 SQL 查询,我想在其中获取多个日期范围和多个时间范围之间的特定数据。
我的 table 看起来像这样:
ID
date
time
1
2021-01-01
10:00
这是我提出的要求:
SELECT * FROM myTable
WHERE (date BETWEEN "2021-01-01" AND "2021-01-05")
OR (date BETWEEN "2021-05-01" AND "2021-05-05")
AND (time date BETWEEN "10:00" AND "11:00")
OR (time date BETWEEN "14:00" AND "15:00")
首先,我只使用了 AND 运算符,但效果不佳,我看到有人说我们可以对此类内容使用 OR 运算符。
但问题是我这里的条件仍然是错误的,因为它没有像我想要的那样工作。它 returns 一个日期超出范围,时间在范围内,一个日期在范围内,时间在范围外。我只想查找介于每个日期范围和每次之间的日期。我可以有无限多个日期范围和时间范围。
and
的优先级高于 or
。您可以使用括号将评估顺序强制为您想要的顺序:
SELECT *
FROM myTable
WHERE ((date BETWEEN "2021-01-01" AND "2021-01-05") OR
(date BETWEEN "2021-05-01" AND "2021-05-05"))
AND
((time date BETWEEN "10:00" AND "11:00") OR
(time date BETWEEN "14:00" AND "15:00"))
我正在执行一个 SQL 查询,我想在其中获取多个日期范围和多个时间范围之间的特定数据。
我的 table 看起来像这样:
ID | date | time |
---|---|---|
1 | 2021-01-01 | 10:00 |
这是我提出的要求:
SELECT * FROM myTable
WHERE (date BETWEEN "2021-01-01" AND "2021-01-05")
OR (date BETWEEN "2021-05-01" AND "2021-05-05")
AND (time date BETWEEN "10:00" AND "11:00")
OR (time date BETWEEN "14:00" AND "15:00")
首先,我只使用了 AND 运算符,但效果不佳,我看到有人说我们可以对此类内容使用 OR 运算符。 但问题是我这里的条件仍然是错误的,因为它没有像我想要的那样工作。它 returns 一个日期超出范围,时间在范围内,一个日期在范围内,时间在范围外。我只想查找介于每个日期范围和每次之间的日期。我可以有无限多个日期范围和时间范围。
and
的优先级高于 or
。您可以使用括号将评估顺序强制为您想要的顺序:
SELECT *
FROM myTable
WHERE ((date BETWEEN "2021-01-01" AND "2021-01-05") OR
(date BETWEEN "2021-05-01" AND "2021-05-05"))
AND
((time date BETWEEN "10:00" AND "11:00") OR
(time date BETWEEN "14:00" AND "15:00"))