3

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

除了要应用于查询的其他百万业务规则之外,我需要从 (currentdate) 到 (current date - 7) 的事务

4

3 回答 3

3

您可以使用 mysql DATEDIFF 函数来实现:

SELECT * 
FROM txn 
WHERE DATEDIFF( CURDATE( ) , `post_ts` ) <= 7;
于 2012-06-02T06:58:21.663 回答
2

如果您不需要比日期部分更精确(不考虑小时、分钟或秒),那么您可以使用以下功能DATEDIFF

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

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

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

于 2012-06-02T07:02:45.297 回答
1
select 
    *
from 
    txn
where
    TO_DAYS(NOW()) - TO_DAYS(post_ts) <= 7;
于 2012-06-02T06:55:53.650 回答