从周数获得第一周的第一天

use*_*307 2 oracle plsql

在Oracle中,有一个直接的方法来获得一周的第一天给出一周的数字吗?

例如,今天的日期是12/4/2012.如果我运行:从双重选择to_char(sysdate,'WW'); 它返回49作为周数.

我想做的是第一天以某种方式返回2012年12月2日...给出第49周(假设星期日是一周的第一天).

有任何想法吗?在此先感谢您的帮助!

Daz*_*zaL 6

试试这个:

select next_day(max(d), 'sun') requested_sun
  from (select to_date('01-01-2012', 'dd-mm-yyyy') + (rownum-1) d from dual connect by level <= 366)
 where to_char(d, 'ww') = 49-1;
Run Code Online (Sandbox Code Playgroud)

只需设置您的年份to_date('01-01-2012'和周数-1即可49-1.

2008年第49周的周日?

SQL> select next_day(max(d), 'sun') requested_sun
  2    from (select to_date('01-01-2008', 'dd-mm-yyyy') + (rownum-1) d from dual connect by level <= 366)
  3   where to_char(d, 'ww') = 49-1;

REQUESTED
---------
07-DEC-08
Run Code Online (Sandbox Code Playgroud)

和2012年

SQL> select next_day(max(d), 'sun') requested_sun
  2    from (select to_date('01-01-2012', 'dd-mm-yyyy') + (rownum-1) d from dual connect by level <= 366)
  3   where to_char(d, 'ww') = 49-1;

REQUESTED
---------
02-DEC-12
Run Code Online (Sandbox Code Playgroud)