我有一个txn(交易)表,其中有一个名为post_ts的日期时间字段,该字段表示交易日期。我正在使用 Spring Batch 为批处理作业(应该是在星期日运行的每周作业)编写代码,并且我需要运行查询,以便我需要从一周内获取所有事务我正在执行这项工作。
除了要应用于查询的其他百万业务规则之外,我需要从 (currentdate) 到 (current date - 7) 的事务
您可以使用 mysql DATEDIFF 函数来实现:
SELECT *
FROM txn
WHERE DATEDIFF( CURDATE( ) , `post_ts` ) <= 7;
如果您不需要比日期部分更精确(不考虑小时、分钟或秒),那么您可以使用以下功能DATEDIFF
:
SELECT *
FROM txn
WHERE DATEDIFF( NOW(), post_ts ) <= 7;
编辑:我改变了答案。这是错误的,因为我第一次使用TIMEDIFF
函数而不是DATEDIFF
.
TIMEDIFF
给出小时,分钟,...DATEDIFF
的差异,而给出日期部分的差异,忽略小时:分钟:秒部分。
select
*
from
txn
where
TO_DAYS(NOW()) - TO_DAYS(post_ts) <= 7;