我已经阅读了一些与我相似的问题,在那里我可以找到与我正在使用的几乎相同的查询。但我不得不问,因为我想理解为什么这不起作用:
我有以下数据:
id category_id start_date end_date image campaign_id published
1 1 2011-07-05 2011-07-5 a.gif 3 1
2 1 2011-07-01 2011-07-15 c.gif 3 1
3 37 2011-07-01 2011-07-04 d.gif 3 1
我期望从此查询获得第1行和第2行:
SELECT id, category_id, start_date, end_date FROM categories_campaigns WHERE start_date <= NOW() AND end_date >= NOW();
根据我的经验,返回的唯一行是第二行。还有这个,给我第二个,
SELECT category_id, start_date, end_date FROM categories_campaigns WHERE end_date >= NOW();
下一个回复我3,
SELECT category_id, start_date, end_date FROM categories_campaigns WHERE start_date <= NOW();
两列的数据类型都是DATE。所以,我的问题是,如何解决这个问题?为什么会这样?或者我有一个明显的错误,我找不到要找的东西。
非常感谢您寻求任何帮助表示赞赏!
--------------编辑:已解决!
大!我找到了解决方案,
SELECT category_id, start_date, end_date FROM categories_campaigns WHERE start_date <= DATE(NOW()) and end_date >= DATE(NOW());
按预期返回前2行!是啊! ; d
答案 0 :(得分:2)
工作查询
SELECT category_id, start_date, end_date FROM categories_campaigns WHERE start_date <= DATE(NOW()) and end_date >= DATE(NOW());
答案 1 :(得分:0)
我想你可以用这个:
SELECT category_id, start_date, end_date FROM categories_campaigns WHERE left(now(),10) between start_date and end_date;
答案 2 :(得分:0)
我认为start_date
和end_date
属于date
数据类型。但NOW()
会返回日期 - 时间值。
使用CUR_DATE()
代替NOW()