MySQL,在开始日期和结束日期列之间获取数据?

时间:2011-07-05 11:48:31

标签: mysql sql

我已经阅读了一些与我相似的问题,在那里我可以找到与我正在使用的几乎相同的查询。但我不得不问,因为我想理解为什么这不起作用:

我有以下数据:

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

3 个答案:

答案 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_dateend_date属于date数据类型。但NOW()会返回日期 - 时间值。

使用CUR_DATE()代替NOW()