2012-06-21 60 views
0

我想从数据库中选择记录,只要它们匹配今天的日期。数据库中日期的格式为2012-06-20 9:30:00我正在使用语句SELECT id FROM新闻报道WHERE DATE(newsdate) = CURDATE()但它不会返回今天的任何记录吗?根据今天的日期选择行

与日期

http://img135.imageshack.us/img135/8399/2347f03df0394cd898c7fc5.png

+0

这对我来说很好。你确定目前有新闻吗? –

+1

什么是列类型?文本或日期时间? – 2012-06-21 00:56:13

+0

@Gam Erix VARCHAR –

回答

1
DATE_FORMAT(NOW(),'%Y-%m-%d') = FORMAT_DATE(NOW(newsdate), '%Y-%m-%d') 

或者更好:

DATE(newsdate) = DATE(NOW()) 

的最佳方式是存储与2001-09-11日期格式附加列和比较这一个

Example,感谢@Conrad Frix

+0

我试了两种解决方案,也删除了列的时间部分,所以它只有日期ymd但仍然不起作用 –

+1

@ Mr.1.0工作[罚款](http://sqlfiddle.com/#!2/98c94/1)。 odiszapc随时在您的答案中包含演示 –

0

它看起来像CURDATE功能将会给你的东西比你在数据库中已经得到了日期格式不同的列的屏幕截图。

在文档看看这里

MySQL Date and Time Functions

它应该用此格式返回日期:

2008-11-11 

所以,你既可以搜索CURDATE之间的日期范围( )和curdate()+ INTERVAL 1 DAY(未测试),或以curdate()格式存储日期。