问题描述
我要求每周从当前日期开始显示日期,持续48个月。
我想知道是否可以通过sql进行操作,否则我将不得不编写一个函数来实现它。
到目前为止,以下是我的sql:-
SELECT
CALENDAR_DATE
FROM
CALENDAR --My Table Name
WHERE
(
CALENDAR_DATE >= trunc(sysdate)
AND
CALENDAR_DATE <= ADD_MONTHS(Trunc(SYSDATE,'MONTH'),48)-1
)
这将使我的输出为
9/10/2020
9/11/2020
9/12/2020
9/13/2020
预期输出:-
9/10/2020
9/17/2020
9/24/2020
10/01/2020
解决方法
如果我理解正确:
WHERE CALENDAR_DATE >= trunc(sysdate) AND
CALENDAR_DATE <= ADD_MONTHS(TRUNC(SYSDATE,'MONTH'),48) - 1 AND
MOD(CALENDAR_DATE - TRUNC(sysdate),7) = 0
这对日期差使用mod()
操作。您还可以查看星期几:
WHERE CALENDAR_DATE >= trunc(sysdate) AND
CALENDAR_DATE <= ADD_MONTHS(TRUNC(SYSDATE,48) - 1 AND
TO_CHAR(CALENDAR_DATE,'DY') = TO_CHAR(sysdate,'DY')