如何从oracle中查到每个月中有几周 , 每周的日期段从几号到几号?有几周,把每个月的最后一天拼成串传到如下SQL:
select to_char(to_date('20111031','yyyymmdd'),'w') from dual;
每周日期段没找到直接的,可以自己写个函数:
1、获取1号是周几,如周4oracle周数怎么排;
2、则1-4号为第一周,即1号 (7-4)天=4号;
3、循环:4 1=5号——4 7=11号为第二周;
直到:某周加完后的日期,大于该月的最大天数,则取该月最大天数收尾,循环结束;
第二种方法是oracle周数怎么排你建个存日期的表:
dateweek
……
20110101
20110102
……
里面存N年的日期,然后根据
select to_char(to_date('20111031','yyyymmdd'),'w') from dual; 把week字段update进去;
然后直接根据这张表写SQL就直接获取几周,每周是几号到几号了 。。。
Oracle计算周数的几种方式比如星期一到星期天算一周 查2011年7月完整周数 select max(count1) - 1 from (SELECT count(1) count1 FROM DUAL WHERE TO_CHAR(ADD_MONTHS(LAST_DAY(to_date('201107', 'yyyyMM')), -1)LEVEL, 'DAY') = '星期一' CONNECT BY LEVEL
在oracle中,怎么把时间按每周分组啊,数据库中存的是一个固定的时间,请教各位大虾指点指点 。oracle的date时间类型是 '2011-7-30 14:31'这种形式
因此就算你用extract()或者to_char()截取时间段也没有没办法区分周
我建议的方法是新建一个字段week,从时间里截取月和日去计算周,可以从每月的第一天00:00开始算,完成7天算一周 。
也就是说这个字段week下要有至少4条记录,分别是每一个月的第一二三四周 。
然后根据这个字段用 group by week 去分组就行了 。
(八百里加急)oracle按周分组没有样表oracle周数怎么排,用oracle周数怎么排了ORACLE的scott的表oracle周数怎么排 , 日期只有1981/05/01的路 供参考
select t1.week_times_base 周次,t2.js 计数 from
(select TO_CHAR(ff.date_col_base1, 'IYIW') week_times_base from (
select to_date('1981/05/01','YYYY/MM/DD') - 59rownum - 1 date_col_base
from dba_objects xx
where rownum = 60 ) ff group by TO_CHAR(ff.date_col_base1, 'IYIW') ) t1
left join
(select TO_CHAR(t.hiredate1, 'IYIW') week_times,count(1) js
from scott.emp t
--这里可加日期条件提高查询效率
group by TO_CHAR(t.hiredate1, 'IYIW')) t2
on t1.week_times_base = t2.week_times
order by week_times_base
详细讲解Oracle数据库的“周数计算” ——日期计算 算第n周的第一天及最后一天是几号 by keynes
================================================
—— ww的算法为每年 月 日为第一周开始 date为每一周结尾
—— 例如 为第一周的第一天 而第一周的最后一天为=
—— 公式 每周第一天 date周 *
—— 每周最后一天 date周 *
你会发现怎么编排格式都会跑掉
=========================================================================
——日期计算 算第n周的第一天及最后一天是几号 by keynes
=========================================================================
—— ww的算法为每年 月 日为第一周开始 date为每一周结尾
—— 例如 为第一周的第一天 而第一周的最后一天为=
—— 公式 每周第一天 date周 *
—— 每周最后一天 date周 *
—— 如果以ww格式为主 第 周的起迄如下
asdb WFselect to_date( yyyymmdd )* to_date( yyyymmdd )* from dual
TO_DATE( TO_DATE(
JAN JAN
asdb WFselect to_date( yyyymmdd )* to_date( yyyymmdd )* from dual
TO_DATE( TO_DATE(
APR APR
Elapsed
—— 验证如下
asdb WFselect to_char(to_date( yyyymmdd ) ww ) as weekn to_char(to_date( yyyymmdd ) ww ) as week to_char(to_date( yyyymmdd ) ww ) as week to_char(to_date( yyyymmdd ) ww ) as weekn from dual
WEEK WEEK WEEK WEEK
Elapsed
asdb WF
—— iw的算法为星期一至星期日算一周 且每年的第一个星期一为第一周
—— 例如 为星期六 所以用iw的算法是前年的 周 而 之后才是第一周的开始
—— 公式 每周第一天 next_day(date)周 *
—— 每周最后一天 next_day(date)周 *
—— 如果以iw格式为主 第 周的起迄如下
asdb WFselect next_day(to_date( yyyymmdd ) MONDAY )* as first_day next_day(to_date( yyyymmdd ) MONDAY )* as last_day from dual
FIRST_DAY LAST_DAY
JAN JAN
Elapsed
asdb WF
asdb WFselect next_day(to_date( yyyymmdd ) MONDAY )* as first_day next_day(to_date( yyyymmdd ) MONDAY )* as last_day from dual
FIRST_DAY LAST_DAY
APR MAY
Elapsed
asdb WF
—— 验证如下
asdb WFselect to_char(to_date( yyyymmdd ) iw ) as weekn to_char(to_date( yyyymmdd ) iw ) as week to_char(to_date( yyyymmdd ) iw ) as week to_char(to_date( yyyymmdd ) iw ) as weekn from dual
WEEK WEEK WEEK WEEK
Elapsed
其它
——== 查今天是 本月 的第几周
SELECT TO_CHAR(SYSDATE WW ) TO_CHAR(TRUNC(SYSDATE MM ) WW )AS weekOfMon from dual
或
SELECT TO_CHAR(SYSDATE W ) AS weekOfMon from dual
——== 查今天是 今年 的第几周
select to_char(sysdate ww ) from dual
或
select to_char(sysdate iw ) from dual
附注
上文所提之iw及ww格式在doc内解释如下
IW = Week of year ( or ) based on the ISO standard
WW = Week of year ( ) where week starts on the first day of the year and continues to the seventh day of the year
lishixinzhi/Article/program/Oracle/201311/18798
oracle周数计算 oracle周数计算
===========================================================
作者: keyneslin()
发表于: :
分类: ORACLE
出处:
================================================
日期计算 算第n周的第一天及最后一天是几号by keynes
================================================
ww的算法为每年 月 日为第一周开始 date为每一周结尾
例如 为第一周的第一天 而第一周的最后一天为=
公式 每周第一天date周 *
每周最后一天 date周 *
不管怎么编排格式都会跑掉 真气人 ~~
=========================================================================
日期计算 算第n周的第一天及最后一天是几号by keynes
=========================================================================
ww的算法为每年 月 日为第一周开始 date为每一周结尾
例如 为第一周的第一天 而第一周的最后一天为=
公式 每周第一天date周 *
每周最后一天 date周 *
如果以ww格式为主 第 周的起迄如下
:asdb:WFselect to_date( yyyymmdd )* to_date( yyyymmdd )* from dual;
TO_DATE( TO_DATE(
JAN JAN
:asdb:WFselect to_date( yyyymmdd )* to_date( yyyymmdd )* from dual;
TO_DATE( TO_DATE(
APR APR
Elapsed: : :
验证如下
:asdb:WFselect to_char(to_date( yyyymmdd ) ww ) as weekn to_char(to_date( yyyymmdd ) ww ) as week to_char(to_date( yyyymmdd ) ww ) as week to_char(to_date( yyyymmdd ) ww ) as weekn from dual;
WEEK WEEK WEEK WEEK
Elapsed: : :
:asdb:WF
iw的算法为星期一至星期日算一周 且每年的第一个星期一为第一周
例如 为星期六 所以用iw的算法是前年的 周 而 之后才是第一周的开始
公式 每周第一天next_day(date)周 *
每周最后一天 next_day(date)周 *
如果以iw格式为主 第 周的起迄如下
:asdb:WFselect next_day(to_date( yyyymmdd ) MONDAY )* as first_day next_day(to_date( yyyymmdd ) MONDAY )* as last_day from dual;
FIRST_DAY LAST_DAY
JAN JAN
Elapsed: : :
:asdb:WF
:asdb:WFselect next_day(to_date( yyyymmdd ) MONDAY )* as first_day next_day(to_date( yyyymmdd ) MONDAY )* as last_day from dual;
FIRST_DAY LAST_DAY
APR MAY
Elapsed: : :
:asdb:WF
验证如下
:asdb:WFselect to_char(to_date( yyyymmdd ) iw ) as weekn to_char(to_date( yyyymmdd ) iw ) as week to_char(to_date( yyyymmdd ) iw ) as week to_char(to_date( yyyymmdd ) iw ) as weekn from dual;
WEEK WEEK WEEK WEEK
Elapsed: : :
其它
== 查今天是 本月 的第几周
SELECT TO_CHAR(SYSDATE WW ) TO_CHAR(TRUNC(SYSDATE MM ) WW )AS weekOfMon from dual;
或
SELECT TO_CHAR(SYSDATE W ) AS weekOfMon from dual;
== 查今天是 今年 的第几周
select to_char(sysdate ww ) from dual;
或
select to_char(sysdate iw ) from dual;
附注
上文所提之iw及ww格式在doc内解释如下
IW = Week of year ( or ) based on the ISO standard
WW = Week of year ( ) where week starts on the first day of the year and continues to the seventh day of the year
参考文件
Format Models
oracle周数计算(续)
===========================================================
作者: keyneslin()
发表于: :
分类: ORACLE
出处:
本篇是接续前一篇 因有朋友(allenc)要计算oracle的周数日期起迄
所以测试了一下
测试结果如下
特殊周数计算
星期日到星期六为一周(与ww及iw算法不同)
例 年的第一周起迄是同一天 是
例 年的第一周起为 迄为
计算第一周的天数
create or replace function fdf(p_date in date) return number
is
begin
检查是否传入要计算那一年的一月一日
if to_char(to_char(p_date ddd ))then
return null;
end if;
如果第一周的第一天刚好也是最后一天时 传回
if to_char(p_date d )then
return (next_day(p_date SATURDAY ) p_date);
else
return ;
end if;
exception
when others then
dbms_output put_line(sqlerrm);
end;
计算公式
起decode(周 计算当年的一月一日 计算当年的一月一日(fdf(计算当年的一月一日)(周 )* )) as 起
迄(第一种算法) decode(周 to_date(to_char(计算当年的一月一日 yyyy )|| || yyyymmdd ) 计算当年的一月一日(fdf(计算当年的一月一日)(周 )* )) as 迄
迄(第二种算法) decode(周 last_day(trunc(计算当年的一月一日 mm )) 计算当年的一月一日(fdf(计算当年的一月一日)(周 )* )) as 迄
上面的参数部份 计算当年的一月一日 为date type 周 为number type
传回值一律是date型态
例如
年第 周
select decode( to_date( yyyymmdd ) to_date( yyyymmdd )(fdf(to_date( yyyymmdd ))( )* )) as s_week decode( to_date(to_char(to_date( yyyymmdd ) yyyy )|| || yyyymmdd ) to_date( yyyymmdd )(fdf(to_date( yyyymmdd ))( )* )) as e_week from dual;
年第 周
select decode( to_date( yyyymmdd ) to_date( yyyymmdd )(fdf(to_date( yyyymmdd ))( )* )) as s_week decode( to_date(to_char(to_date( yyyymmdd ) yyyy )|| || yyyymmdd ) to_date( yyyymmdd )(fdf(to_date( yyyymmdd ))( )* )) as e_week from dual;
年第 周
select decode( to_date( yyyymmdd ) to_date( yyyymmdd )(fdf(to_date( yyyymmdd ))( )* )) as s_week decode( to_date(to_char(to_date( yyyymmdd ) yyyy )|| || yyyymmdd ) to_date( yyyymmdd )(fdf(to_date( yyyymmdd ))( )* )) as e_week from dual;
年第 周
select decode( to_date( yyyymmdd ) to_date( yyyymmdd )(fdf(to_date( yyyymmdd ))( )* )) as s_week decode( to_date(to_char(to_date( yyyymmdd ) yyyy )|| || yyyymmdd ) to_date( yyyymmdd )(fdf(to_date( yyyymmdd ))( )* )) as e_week from dual;
年第 周
select decode( to_date( yyyymmdd ) to_date( yyyymmdd )(fdf(to_date( yyyymmdd ))( )* )) as s_week decode( to_date(to_char(to_date( yyyymmdd ) yyyy )|| || yyyymmdd ) to_date( yyyymmdd )(fdf(to_date( yyyymmdd ))( )* )) as e_week from dual;
年第 周
select decode( to_date( yyyymmdd ) to_date( yyyymmdd )(fdf(to_date( yyyymmdd ))( )* )) as s_week decode( to_date(to_char(to_date( yyyymmdd ) yyyy )|| || yyyymmdd ) to_date( yyyymmdd )(fdf(to_date( yyyymmdd ))( )* )) as e_week from dual;
年第 周方法
select decode( to_date( yyyymmdd ) to_date( yyyymmdd )(fdf(to_date( yyyymmdd ))( )* )) as s_week decode( last_day(trunc(to_date( yyyymmdd ) mm )) to_date( yyyymmdd )(fdf(to_date( yyyymmdd ))( )* )) as e_week from dual;
结果如下
:asdb:WF 年第 周
:asdb:WFselect decode( to_date( yyyymmdd ) to_date( yyyymmdd )(fdf(to_date( yyyymmdd ))( )* )) as s_week decode( to_date(to_char(to_date( yyyymmdd ) yyyy )|| || yyyymmdd ) to_date( yyyymmdd )(fdf(to_date( yyyymmdd ))( )* )) as e_week from dual;
S_WEEKE_WEEK
JAN JAN
Elapsed: : :
:asdb:WF 年第 周
:asdb:WFselect decode( to_date( yyyymmdd ) to_date( yyyymmdd )(fdf(to_date( yyyymmdd ))( )* )) as s_week decode( to_date(to_char(to_date( yyyymmdd ) yyyy )|| || yyyymmdd ) to_date( yyyymmdd )(fdf(to_date( yyyymmdd ))( )* )) as e_week from dual;
S_WEEKE_WEEK
JAN JAN
Elapsed: : :
:asdb:WF 年第 周
:asdb:WFselect decode( to_date( yyyymmdd ) to_date( yyyymmdd )(fdf(to_date( yyyymmdd ))( )* )) as s_week decode( to_date(to_char(to_date( yyyymmdd ) yyyy )|| || yyyymmdd ) to_date( yyyymmdd )(fdf(to_date( yyyymmdd ))( )* )) as e_week from dual;
S_WEEKE_WEEK
DEC DEC
Elapsed: : :
:asdb:WF
:asdb:WF 年第 周
:asdb:WFselect decode( to_date( yyyymmdd ) to_date( yyyymmdd )(fdf(to_date( yyyymmdd ))( )* )) as s_week decode( to_date(to_char(to_date( yyyymmdd ) yyyy )|| || yyyymmdd ) to_date( yyyymmdd )(fdf(to_date( yyyymmdd ))( )* )) as e_week from dual;
S_WEEKE_WEEK
JAN JAN
Elapsed: : :
:asdb:WF 年第 周
:asdb:WFselect decode( to_date( yyyymmdd ) to_date( yyyymmdd )(fdf(to_date( yyyymmdd ))( )* )) as s_week decode( to_date(to_char(to_date( yyyymmdd ) yyyy )|| || yyyymmdd ) to_date( yyyymmdd )(fdf(to_date( yyyymmdd ))( )* )) as e_week from dual;
S_WEEKE_WEEK
JAN JAN
Elapsed: : :
:asdb:WF 年第 周
:asdb:WFselect decode( to_date( yyyymmdd ) to_date( yyyymmdd )(fdf(to_date( yyyymmdd ))( )* )) as s_week decode( to_date(to_char(to_date( yyyymmdd ) yyyy )|| || yyyymmdd ) to_date( yyyymmdd )(fdf(to_date( yyyymmdd ))( )* )) as e_week from dual;
S_WEEKE_WEEK
DEC DEC
Elapsed: : :
lishixinzhi/Article/program/Oracle/201311/18269
【oracle周数怎么排 oracle按周查询】oracle周数怎么排的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于oracle按周查询、oracle周数怎么排的信息别忘了在本站进行查找喔 。
推荐阅读
- Python怎么实现struct结构体,python structure
- redis下载和使用,redis客户端下载
- 小红书流量查询chatgpt,小红书流量查询app
- 什么是微信远程视频,微信远程是什么意思
- windowshr系统的简单介绍
- php7连接mysql乱码,php跟mysql进行连接过程中,如果连接失败
- cytoid导入歌曲ios系统,音乐导入apple music
- 看cba用什么直播app,看cba直播用什么软件
- oracle如何保存小数 oracle怎么保存