SELECT CASE WHEN TRUNC (sysdate, 'mm') = TRUNC (sysdate) OR TO_CHAR (TRUNC (sysdate, 'mm'), 'IW' ) = TO_CHAR (TRUNC (sysdate), 'IW') THEN 1 ELSE TO_CHAR (TRUNC (sysdate), 'IW') - TO_CHAR (TRUNC (sysdate, 'mm'), 'IW' ) + 1 END num FROM DUAL用我这段sql你可以判断任何一个日子是当月的第几周 如果1号为周日的话,也算一周,今天27号,就是第五周 可以把sysdate换成任何日子
declare v_f date; v_next date; v_num number; begin select trunc(to_number(to_char(last_day(sysdate),'dd'))/7) into v_num from dual; select trunc(sysdate,'mm') into v_f from dual; for i in 1..v_num loop select next_day(v_f,1) into v_next from dual; v_f:=v_next; dbms_output.put_line(v_next); end loop; end;
WHEN TRUNC (sysdate, 'mm') =
TRUNC (sysdate)
OR TO_CHAR (TRUNC (sysdate, 'mm'),
'IW'
) =
TO_CHAR (TRUNC (sysdate), 'IW')
THEN 1
ELSE TO_CHAR (TRUNC (sysdate), 'IW')
- TO_CHAR (TRUNC (sysdate, 'mm'),
'IW'
)
+ 1
END num
FROM DUAL用我这段sql你可以判断任何一个日子是当月的第几周
如果1号为周日的话,也算一周,今天27号,就是第五周
可以把sysdate换成任何日子
v_f date;
v_next date;
v_num number;
begin
select trunc(to_number(to_char(last_day(sysdate),'dd'))/7) into v_num from dual;
select trunc(sysdate,'mm') into v_f from dual;
for i in 1..v_num loop
select next_day(v_f,1) into v_next from dual;
v_f:=v_next;
dbms_output.put_line(v_next);
end loop;
end;