我有一个 txn (交易)表,其中有一个名为 post_ts 的日期时间字段,该字段代表交易日期。 我正在使用Spring Batch编写批处理作业的代码(应该是星期日运行的每周作业),我需要运行查询,以便我需要将一周内的所有事务提取回日期我在做这份工作。
除了要应用于查询的其他百万个业务规则外,我需要从(currentdate)到(当前日期 - 7)的交易
答案 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;