2016-11-05 39 views
0

我有以下结构的表:如何在MySQL中使用datediff函数过滤行?

+===========+============+ 
| titleName | date | 
+===========+============+ 
| title1 | 2016-08-06 | 
+===========+============+ 
| title2 | 2016-08-03 | 
+===========+============+ 
| title3 | 2016-07-29 | 
+===========+============+ 
| title4 | 2016-08-09 | 
+===========+============+ 
| title5 | 2016-09-03 | 
+===========+============+ 

我想仅选择不从当前日期(2016年11月4日),超过90天的行如下:

+===========+============+ 
| titleName | date | 
+===========+============+ 
| title4 | 2016-08-09 | 
+===========+============+ 
| title5 | 2016-09-03 | 
+===========+============+ 

我曾尝试下面的查询,但预期它不工作:

SELECT titleName, Datediff(NOW(), publish_date) AS datediff FROM myTable ORDER BY titleName DESC LIMIT 8 

请帮我做出了正确的查询。

回答

1

使用WHERE条款与INTERVAL

SELECT * FROM the_table WHERE `date` + INTERVAL 90 DAY >= NOW(); 
+0

感谢朋友,你救我的一天。 –

1

我想你想要这样的:

select t.* 
from mytable t 
where publish_date >= date_sub(curdate(), interval 90 day); 

如果你想看到的天数,然后包括在selectdatediff()表达。

2

它会正常工作

SELECT titleName, date FROM mytable WHERE Datediff(NOW(), date)<90 ORDER BY titleName DESC LIMIT 8