11:38:37 jlanzpa817>select '第'||to_char(sysdate,'WW')||'周' from dual;'第'||
------
第36周已用时间:  00: 00: 00.20
if trunc(date1,'mm') = trunc(date2,'mm')

解决方案 »

  1.   

    if to_char(sysdate,'yyyy-mm')=to_char(sysdate+1,'yyyy-mm') then
      同月
      

  2.   

    虽然背4星,但是不懂oracle :-)
      

  3.   

    用一个比较土的办法
    (:a- date)/7 equal (:b-date)/7
    整数相等即同一周
      

  4.   

    仅有ww是不够DI
    to_char(date1,'yyyyww')=to_char(date2,'yyyyww') 才是正解
      

  5.   

    MountLion的办法应该没有问题的呀,对于月就用:
    to_char(date1,'yyyymm')=to_char(date2,'yyyymm') 
      

  6.   

    对啊,跨年度就有问题,难道oracle不能获得一个日期是一年里面的第多少周吗?
      

  7.   

    假如一周的概念:周一,周二,,,,周日
    取一个(早一点的)已知的是周一的日期: date0
    if floor(trunc(date1 - date0)/7) = floor(trunc(date2 - date0)/7) then 
      

  8.   

    笨办法
    你可先判断是否为同一个月,在判断是不是同一周
     if  to_char(date1,'yyyymm')=to_char(date2,'yyyymm') then
         if  to_char(date1,'ww')=to_char(date2,'ww') then
      

  9.   

    declare 
      -- Local variables here
      date1 varchar2(8):='20020901';
      date2 varchar2(8):='20020903';
    begin
      -- Test statements here
      if (to_date(date1,'yyyymmdd')-to_char(to_date(date1,'yyyymmdd'),'d'))-(to_date(date2,'yyyymmdd')-to_char(to_date(date2,'yyyymmdd'),'d'))=0 then
         dbms_output.put_line('一样');
      end if ;
    end;
    如果第一天在一个
      

  10.   

    create or replace procedure compare(date1 in date,date2 in date) is
    flag varchar2(5);
    begin
      if abs(date1-date2)<7
      then if (date1-date2)*(to_char(date1,'d')-to_char(date2,'d'))>0
           then flag:='yes';
           else flag:='no';
           end if;
      else flag:='no';
      end if;
      dbms_output.put_line(flag);
      
    end compare;SQL> exec compare('31-dec-2001','01-jan-2002');
    yesPL/SQL procedure successfully completed.SQL>  exec compare(sysdate,sysdate-3);
    yesPL/SQL procedure successfully completed.SQL>  exec compare(sysdate,sysdate-4);
    noPL/SQL procedure successfully completed.
      

  11.   

    判断20020903和20020902是否在一周内:
    SQL> select decode(sign(abs(to_number('20020903')-to_number('20020902'))-7),1,'不在一周内',
      2  decode(instr(to_char(to_date('20020903','yyyymmdd'),'day'),
      3  to_char(to_date('20020902','yyyymmdd'),'day')),0,'在一周内','不在一周内')) from dual;DECODE(S
    --------
    在一周内SQL>
      

  12.   

    black_dragon(半仙):16:15:14 jlanzpa817>exec compare(sysdate,sysdate);
    noPL/SQL 过程已成功完成。已用时间:  00: 00: 00.61
      

  13.   

    bzszp(SongZip):16:18:42 jlanzpa817>select decode(sign(abs(to_number('20020902')-to_number('20020902'))-7),1,'不在一
    周内',
    16:19:00   2  decode(instr(to_char(to_date('20020902','yyyymmdd'),'day'),
    16:19:00   3  to_char(to_date('20020902','yyyymmdd'),'day')),0,'在一周内','不在一周内')) from dual;DECODE(SIG
    ----------
    不在一周内已用时间:  00: 00: 00.20
    16:19:00 jlanzpa817>
      

  14.   

    刚才有点晕了,很简单,这样:
    SQL> select decode(sign(next_day(to_date('20020903','yyyymmdd'),1)-next_day(to_date('20020903','yyyy
    mmdd'),1)),0,'在一周内','不在一周内') from dual;DECODE(S
    --------
    在一周内SQL> select decode(sign(next_day(to_date('20020902','yyyymmdd'),1)-next_day(to_date('20020903','yyyy
    mmdd'),1)),0,'在一周内','不在一周内') from dual;DECODE(S
    --------
    在一周内SQL>  select decode(sign(next_day(to_date('20020912','yyyymmdd'),1)-next_day(to_date('20020903','yyy
    ymmdd'),1)),0,'在一周内','不在一周内') from dual;DECODE(SIG
    ----------
    不在一周内SQL>
      

  15.   

    bzszp(SongZip):
    16:48:39 jlanzpa817>select decode(sign(next_day(to_date('20020901','yyyymmdd'),1)
    16:49:14   2  -next_day(to_date('20020904','yyyy
    16:49:14   3  mmdd'),1)),0,'在一周内','不在一周内') from dual;DECODE(SIG
    ----------
    在一周内已用时间:  00: 00: 00.20
    16:49:14 jlanzpa817>
    周日, 周四
      

  16.   

    (date1-date2)*(to_char(date1,'d')-to_char(date2,'d'))>0
    改为
    (date1-date2)*(to_char(date1,'d')-to_char(date2,'d'))>=0 jlandzpa(欧高黎嘉陈) :
    多谢!
      

  17.   

    在外国周日是一个周的开始,如果是按周一是一周的开始的话,就这样
    select decode(sign(next_day(to_date('20020901','yyyymmdd')-1,1)
    -next_day(to_date('20020904','yyyymmdd')-1,1)),0,'在一周内','不在一周内') from dual;
      

  18.   

    black_dragon(半仙) :
    17:00:04 jlanzpa817>exec  compare(sysdate,sysdate+4) 
    noPL/SQL 过程已成功完成。已用时间:  00: 00: 00.71
      

  19.   

    SQL> select decode(sign(next_day(to_date('20020901','yyyymmdd')-1,1)
      2  -next_day(to_date('20020904','yyyymmdd')-1,1)),0,'在一周内','不在一周内') from dual;DECODE(SIG
    ----------
    不在一周内周日 周三
    SQL> select decode(sign(next_day(to_date('20020902','yyyymmdd')-1,1)
      2  -next_day(to_date('20020908','yyyymmdd')-1,1)),0,'在一周内','不在一周内') from dual;DECODE(S
    --------
    在一周内周一 本周日这样可以了吧
    :-)
      

  20.   

    jlandzpa(欧高黎嘉陈) :
    周日是一周的开始
      

  21.   

    select distinct to_char(data1,'WW'),to_char(data2,'WW') into dataa1,dataa2 from dual;If dataa1 <> dataa2 Then
     ok;
    end if ;重属抄袭
      

  22.   

    bzszp(SongZip) : ok了. 
    呵呵,我没有想到那个函数.