我正在使用此功能过滤超过60天的查询结果:
s.timeSubmitted >= ( CURDATE() - INTERVAL 60 DAY )
问题是,“60天”部分似乎不是一个确切的数字。我想让它过滤s.timeSubmitted超过60天的时间,直到s.timeSubmitted的确切秒。
如何将“60天”写为确切数字(直到第二个)?
答案 0 :(得分:3)
INTERVAL 60 DAY
确切 - 您的问题是CURDATE()
不是。它返回整天,而不是当前时间。
改为使用NOW()
!
答案 1 :(得分:3)
问题是CURDATE()
会返回DATE
类型,而不是DATETIME
类型(即时)。从DATE
中减去间隔的结果是 a DATE
。
相反,试试这个:
s.timeSubmitted >= ( NOW() - INTERVAL 60 DAY )
这可以为您提供所需内容,因为NOW()
会返回DATETIME
,因此减法的结果也是DATETIME
。
答案 2 :(得分:0)
我经常做
now()-interval 60 day
答案 3 :(得分:0)
假设您想要60天前的同一时间;
s.timeSubmitted >= ( now() - interval 60 day);
在这种情况下可能是一个不必要的注释; 1天前可能是23,24或25小时前,根据DST的变化,如果你想要一个特定的小时数作为间隔,不要使用一天而不是24小时。