我有一个news表,我想news通过按列 & 进行过滤来start_at获取所有已开始但尚未结束的表end_at:
"select * from `news` where `start_at` <= NOW() and `end_at` >= NOW()"
Run Code Online (Sandbox Code Playgroud)
或者就像我在 Laravel 中所做的那样:
$news = News::where("start_at", '<=', date("Y-m-d"))
->where("end_at", '>=', date("Y-m-d"))->get();
Run Code Online (Sandbox Code Playgroud)
但如果列为 NULL,我也想忽略按列的过滤end_at,因此如果列为 NULL,我希望显示结果,就好像我只使用此查询一样:
"select * from `news` where `start_at` <= NOW()"
Run Code Online (Sandbox Code Playgroud)
提前致谢。
只需使用 AND/OR 逻辑运算符以及IS NULL比较运算符即可。MySQL 中的查询如下:
SELECT * FROM news
WHERE start_at <= NOW() AND
(end_at >= NOW() OR end_at IS NULL)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
917 次 |
| 最近记录: |