4

to_char(sysdate,'Day')返回当前星期几。我想要的是获得date最近过去的“星期天”。当然,我们可以进行复杂的查询来完成它。但是有什么我不知道的简单方法吗?

4

4 回答 4

8

你可以这样做

SELECT NEXT_DAY(SYSDATE-8, 'SUN') FROM DUAL;

这里

SYSDATE-8

8天前返回&

NEXT_DAY(mydate, 'SUN') 

下个星期天返回它

于 2012-10-10T09:28:20.457 回答
0

您可以使用这样简单的查询来做到这一点:

SELECT dt
  FROM ( SELECT SYSDATE - LEVEL - 1 dt
           FROM DUAL
        CONNECT BY LEVEL < 8)
 WHERE TO_CHAR ( dt, 'd' ) = 1
于 2012-10-10T09:27:58.807 回答
0

我认为NEXT_DAY(SYSDATE-6, 'SUN')会奏效。假设今天是星期天,我回去 6 天(即上星期一),所以当我寻找下一个星期天时,我会得到它sysdate本身。而,next_day(sysdate-8,'SUN')可用于获取前一周的最后一天。感谢您的努力。

于 2012-10-10T15:18:33.097 回答
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工作以找到上一个星期天。

于 2014-05-23T18:41:04.993 回答