MySQL“日” - 我如何得到确切的数字?

时间:2012-01-19 21:33:30

标签: mysql

我正在使用此功能过滤超过60天的查询结果:

s.timeSubmitted >= ( CURDATE() - INTERVAL 60 DAY )

问题是,“60天”部分似乎不是一个确切的数字。我想让它过滤s.timeSubmitted超过60天的时间,直到s.timeSubmitted的确切秒。

如何将“60天”写为确切数字(直到第二个)?

4 个答案:

答案 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小时。