WHERE子句

时间:2016-11-03 15:23:32

标签: mysql sql syntax where mariadb

我试图合并列名的where子句。我需要一个列在条件上返回正数,但同样的条件适用于许多列。蛮力的例子如下,检查几列上某个范围之间的日期。我的列OR' d具有完全相同的条件。

SELECT * FROM foo
WHERE foo.date1 BETWEEN DATE_SUB( DATE_ADD(DATE(NOW()), INTERVAL 16 HOUR), INTERVAL 24 HOUR) and DATE_ADD(DATE(NOW()), INTERVAL 16 HOUR)
OR foo.date2 BETWEEN DATE_SUB( DATE_ADD(DATE(NOW()), INTERVAL 16 HOUR), INTERVAL 24 HOUR) AND DATE_ADD(DATE(NOW()), INTERVAL 16 HOUR);

我更愿意做一些事情:

SELECT * FROM foo
WHERE (foo.date1 OR foo.date2) BETWEEN DATE_SUB( DATE_ADD(DATE(NOW()), INTERVAL 16 HOUR), INTERVAL 24 HOUR) and DATE_ADD(DATE(NOW()), INTERVAL 16 HOUR);

..但它仍然适用于跨行的各个列。

我使用MariaDB,但可以调整其他各种sql的解决方案。

1 个答案:

答案 0 :(得分:1)

第一部作品;第二个是错误的语法。

我更喜欢

BETWEEN NOW() + INTERVAL 16-24 HOUR
    AND NOW() + INTERVAL 16    HOUR

如果16是由时区引起的,请考虑使用TIMESTAMP和/或正确设置系统时间。