WHERE 子句中多行的单列

Single column for multiple rows within WHERE clause

我正在尝试合并列名称上的 where 子句。我需要单列 return 肯定条件,但相同的条件适用于许多列。下面是蛮力示例,用于检查多个列上特定范围之间的日期。我有具有完全相同条件的列 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。

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

我比较喜欢

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

如果 16 是由于时区的原因,请考虑使用 TIMESTAMP and/or 适当地设置您的系统时间。