判断两个日期是否在同一周内

TechnoFantasy 2002-09-04 11:38:02
以及判断是否在同一个月内。
...全文
708 34 打赏 收藏 转发到动态 举报
写回复
用AI写文章
34 条回复
切换为时间正序
请发表友善的回复…
发表回复
MountLion 2002-09-04
  • 打赏
  • 举报
回复
仅有ww是不够DI
to_char(date1,'yyyyww')=to_char(date2,'yyyyww') 才是正解
zzyfoot 2002-09-04
  • 打赏
  • 举报
回复
用一个比较土的办法
(:a- date)/7 equal (:b-date)/7
整数相等即同一周
TechnoFantasy 2002-09-04
  • 打赏
  • 举报
回复
我下午先试一下
TechnoFantasy 2002-09-04
  • 打赏
  • 举报
回复
虽然背4星,但是不懂oracle :-)
Jugular_Phoenix 2002-09-04
  • 打赏
  • 举报
回复
让我回去想想。
zhaoyongzhu 2002-09-04
  • 打赏
  • 举报
回复
if to_char(sysdate,'yyyy-mm')=to_char(sysdate+1,'yyyy-mm') then
同月
jlandzpa 2002-09-04
  • 打赏
  • 举报
回复
这位大虾竟然背着4颗星。
jlandzpa 2002-09-04
  • 打赏
  • 举报
回复
11:38:37 jlanzpa817>select '第'||to_char(sysdate,'WW')||'周' from dual;

'第'||
------
第36周

已用时间: 00: 00: 00.20


if trunc(date1,'mm') = trunc(date2,'mm')
jlandzpa 2002-09-04
  • 打赏
  • 举报
回复
bzszp(SongZip) : ok了.
呵呵,我没有想到那个函数.
bzszp 2002-09-04
  • 打赏
  • 举报
回复
周几是一周的开始都可以,只是依次往前推几天
只要不改成一周6天就行
:-)
joachern 2002-09-04
  • 打赏
  • 举报
回复
select distinct to_char(data1,'WW'),to_char(data2,'WW') into dataa1,dataa2 from dual;

If dataa1 <> dataa2 Then
ok;
end if ;

重属抄袭
black_dragon 2002-09-04
  • 打赏
  • 举报
回复
jlandzpa(欧高黎嘉陈) :
周日是一周的开始
bzszp 2002-09-04
  • 打赏
  • 举报
回复
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
--------
在一周内

周一 本周日

这样可以了吧
:-)
jlandzpa 2002-09-04
  • 打赏
  • 举报
回复
black_dragon(半仙) :
17:00:04 jlanzpa817>exec compare(sysdate,sysdate+4)
no

PL/SQL 过程已成功完成。

已用时间: 00: 00: 00.71
bzszp 2002-09-04
  • 打赏
  • 举报
回复
在外国周日是一个周的开始,如果是按周一是一周的开始的话,就这样
select decode(sign(next_day(to_date('20020901','yyyymmdd')-1,1)
-next_day(to_date('20020904','yyyymmdd')-1,1)),0,'在一周内','不在一周内') from dual;
black_dragon 2002-09-04
  • 打赏
  • 举报
回复
(date1-date2)*(to_char(date1,'d')-to_char(date2,'d'))>0
改为
(date1-date2)*(to_char(date1,'d')-to_char(date2,'d'))>=0

jlandzpa(欧高黎嘉陈) :
多谢!
jlandzpa 2002-09-04
  • 打赏
  • 举报
回复
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>
周日, 周四
bzszp 2002-09-04
  • 打赏
  • 举报
回复
刚才有点晕了,很简单,这样:
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>
jlandzpa 2002-09-04
  • 打赏
  • 举报
回复
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>
jlandzpa 2002-09-04
  • 打赏
  • 举报
回复
black_dragon(半仙):

16:15:14 jlanzpa817>exec compare(sysdate,sysdate);
no

PL/SQL 过程已成功完成。

已用时间: 00: 00: 00.61
加载更多回复(14)

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧