to_char(sysdate,'Day')
返回当周的当前日期。我想要的是获得最近通过的“星期日”的date
。当然,我们可以通过复杂的查询来完成它。但有什么简单的方法我不知道吗?
答案 0 :(得分:7)
你可以用
完成SELECT NEXT_DAY(SYSDATE-8, 'SUN') FROM DUAL;
这里
SYSDATE-8
返回8天前的一天&
NEXT_DAY(mydate, 'SUN')
返回下一个星期日
答案 1 :(得分:0)
您可以使用如此简单的查询来执行此操作:
SELECT dt
FROM ( SELECT SYSDATE - LEVEL - 1 dt
FROM DUAL
CONNECT BY LEVEL < 8)
WHERE TO_CHAR ( dt, 'd' ) = 1
答案 2 :(得分:0)
我认为NEXT_DAY(SYSDATE-6, 'SUN')
会起作用。假设当天是星期天,我回去6天(即最后一个星期一),所以当我寻找下一个星期天时,我会得到sysdate
本身。然而,next_day(sysdate-8,'SUN')
可用于获取前一周的最后一天。谢谢你的努力。
答案 3 :(得分:0)
SELECT dt
FROM ( SELECT to_date('5/23/2014') - LEVEL + 1 dt
FROM DUAL
CONNECT BY LEVEL < 8)
WHERE TO_CHAR ( dt, 'd' ) = 1
我将LEVEL - 1 dt
更改为LEVEL + 1 dt
以使其能够找到上一个星期日。