需要在MySQL中选择DateTime Range

时间:2012-06-02 06:43:03

标签: mysql datetime

我有一个 txn (交易)表,其中有一个名为 post_ts 的日期时间字段,该字段代表交易日期。 我正在使用Spring Batch编写批处理作业的代码(应该是星期日运行的每周作业),我需要运行查询,以便我需要将一周内的所有事务提取回日期我在做这份工作。

除了要应用于查询的其他百万个业务规则外,我需要从(currentdate)到(当前日期 - 7)的交易

3 个答案:

答案 0 :(得分:3)

你可以使用mysql DATEDIFF函数来实现这个目的:

SELECT * 
FROM txn 
WHERE DATEDIFF( CURDATE( ) , `post_ts` ) <= 7;

答案 1 :(得分:2)

如果您不需要更精确的日期部分(不考虑小时,分钟或秒),那么您可以使用函数DATEDIFF

SELECT *
FROM txn
WHERE DATEDIFF( NOW(), post_ts ) <= 7;

编辑:我已经改变了答案。这是错误的,因为我第一次使用TIMEDIFF函数而不是DATEDIFF

TIMEDIFF给出了小时,分钟等的差异......而DATEDIFF给出了日期部分的差异,忽略了小时:分:秒部分。

答案 2 :(得分:1)

select 
    *
from 
    txn
where
    TO_DAYS(NOW()) - TO_DAYS(post_ts) <= 7;