2015-10-05 257 views
-2

我试图从MYSQL数据库中选择超过1天或24小时的记录。我无法弄清楚为什么这种说法不适用于NOW(),它只有在我手动明确添加日期时才有效,下面是您的评论代码:MYSQL选择大于1天的记录

date_posted在DB中设置为“datetime”表。

以这种方式工作(不可取的,因为只有测试)

SELECT count(DISTINCT my_id) AS 'a' 
FROM my_table 
WHERE date_posted >= DATE_SUB('2015-10-03 09:10:19', INTERVAL 24 HOUR) 

应该以这种方式工作,但它带来了一个 “0” 计数结果:

SELECT count(DISTINCT my_id) AS 'a' 
FROM my_table 
WHERE date_posted >= DATE_SUB(NOW(), INTERVAL 24 HOUR) 
+0

你试过Curdate()吗? – yeouuu

+1

你在比较日期和时间,但只想处理日期。尝试'date(date_post)> curdate - interval 1 day',所以你忽略了时间值。 –

+0

是的,我尝试了“current_date”,“curdate()”。刚刚尝试过,“SELECT count(DISTINCT my_id)AS'a'FROM my_table WHERE date(date_posted)> curdate() - interval 1 day”并且它仍然返回一个“0”计数,它只适用于我提到的显式日期以上。 – Andre

回答

0
SELECT count(DISTINCT my_id) AS 'a' 
FROM my_table 
WHERE date_posted >= subdate(current_date, 1) 

这里subdate(current_date, 1)将返回你昨天的日期 如果你只想选择昨天的帖子,然后使用以下内容 WHERE date_posted = subdate(current_date, 1)

+0

它只能像我的代码一样工作,如果日期明确地输入为: “SELECT count(DISTINCT my_id)AS'a' FROM my_table WHERE date_posted> = subdate('2015-10-03 09:10:19',1)“ 问题在于,它表明MYSQL没有识别出任何这些调用; “current_date,now(),curdate()”,很奇怪。 – Andre

+0

可能是你的数据表只有'2015-10-02'不是'2015-10-04'的数据,其中'subdate(current_date,1)'''2015-10-04'。 –

+0

我猜SQL必须说“任何一天或一天​​以上的记录”。 – Andre