oracle的周、月份、日历
1、周
/* 关键在于当年第一周的第一天和最后一天怎么算,后面只需加上7天就是一周,类推
--还有就是确定的是,一年总共只有53周
--Oracle中周日为第一天 ,周六为最后一天 */
SELECT LEVEL 周次,
(Trunc(SYSDATE,'yyyy')-7) + (7-To_Char(Trunc(SYSDATE,'yyyy'),'d')+1) + (LEVEL-1)*7 当周第一天,
(Trunc(SYSDATE,'yyyy')-7) + (7-To_Char(Trunc(SYSDATE,'yyyy'),'d')+1) + (LEVEL-1)*7+6 当周最后一天
FROM dual
CONNECT BY LEVEL<=53;
2、月份
--当年每个月的起止时间
select aa as monNum, to_date(mon,'yyyymmdd') as firstDay,LAST_DAY(to_date(mon,'yyyymmdd')) as lastDay
from (
select to_char(sysdate,'yyyy')||to_char(aa,'09')||'01' mon ,aa
from (
select 1 aa from dual union
select 2 aa from dual union
select 3 aa from dual union
select 4 aa from dual union
select 5 aa from dual union
select 6 aa from dual union
select 7 aa from dual union
select 8 aa from dual union
select 9 aa from dual union
select 10 aa from dual union
select 11 aa from dual union
select 12 aa from dual
)
);
3、日历
--from:http://www.itpub.net/469543.html
select case
when (new_yweek = min(new_yweek)
over(partition by mon order by new_yweek)) then
mon_name
else
null
end as month,
new_yweek as yweek,
row_number() over(partition by mon order by new_yweek) as mweek,
sum(decode(wday, '1', mday, null)) as sun,
sum(decode(wday, '2', mday, null)) as mon,
sum(decode(wday, '3', mday, null)) as tue,
sum(decode(wday, '4', mday, null)) as wed,
sum(decode(wday, '5', mday, null)) as thu,
sum(decode(wday, '6', mday, null)) as fri,
sum(decode(wday, '7', mday, null)) as sat
from (select dayofyear as everyday,
to_char(dayofyear, 'mm') as mon,
to_char(dayofyear, 'Month') as mon_name,
to_char(dayofyear, 'w') as mweek,
to_char(dayofyear, 'ww') as yweek,
case
when (to_char(to_date(&year || '0101', 'yyyymmdd'), 'd') > '1') and
(to_char(dayofyear, 'd') < to_char(to_date(&year || '0101', 'yyyymmdd'), 'd'))
then
to_char(to_char(dayofyear, 'ww') + 1, 'fm00')
else
to_char(dayofyear, 'ww')
end as new_yweek,
to_char(dayofyear, 'd') as wday,
to_char(dayofyear, 'dd') as mday
from (select to_date(&year || '0101', 'yyyymmdd') + level - 1 as dayofyear
from dual
connect by level <= to_char(to_date(&year || '1231', 'yyyymmdd'),'ddd')))
group by mon, mon_name, new_yweek
4、应用
--每周的上报情况 ,由于跨年情况存在,故在第几周前加年份缀,如 [2010]-7 ;
select weekNumCur, sum(上报数) from (
select eventID ,上报数,'['||to_char(createtime,'yyyy')||']-'||to_number(to_char(createtime,'ww')) as weekNumCur , createtime
from statuser.tostat
where createtime between to_date('2010-12-01','yyyy-mm-dd') and to_date('2011-01-10','yyyy-mm-dd')+1 )
group by weekNumCur
order by weekNumCur;
--------------------
时间(周)上报数
[2010]-50 1
[2010]-51 16
[2010]-52 2
[2011]-1 6
分享到:
相关推荐
1.用ORACLE存储过程来存储日历(日期+星期),时间期间(存储天数)可控。 2.节假日和星期可结合区分工作日、非工作日。 3.表可扩展节假日说明。
oracle一个函数可以支持阳历转成阴历日期,我只在英文字符集测试通过。
Oracle 查询两个日期之间的所有月份
-- 查询1月到12月的月份,-- 查询最近的5年,都是关键字CONNECT BY 的用法
oracle实习周前期准备,可以让你在实训周得到充分的准备
2020年日历表(带节气/节日)
oracle行转列
利用 oracle sql 实现 计算一段时间内(除去周六日)的秒数
做了登陆 可以不同用户访问自己的日程 数据库用oracle 程序java编写 仿谷歌日历 删除日程 后台完成 前端 没优化··· 简单的 增加日程 修改日程均已编写完成 (包含程序和数据库文件)
Oracle数据库的周数计算 日期计算,算第n周的第一天及最后一天是几号。 公式...
Oracle 9i Client (Oracle 9i 客户端) 简化版 (不安装Oracle客户端,也可以使用PLSQL Developer 不用安装Oracle客户端也可以使用PLSQL Developer 绿色! 安全! 轻便! 可靠! 1、本软件可作为简单的Oracle9i客户端...
一周循环备份oracle数据库,只用修改链接,设置任务管理器就可以. set oracle_username="l_sys" set oracle_password="123456" set local_tnsname="oradb" 修改以上配置,定时执行即可
oracle_课件oracle_课件oracle_课件oracle_课件oracle_课件oracle_课件oracle_课件oracle_课件oracle_课件oracle_课件oracle_课件
oracle sql 根据年份、周数取日期
Oracle宝典Oracle宝典Oracle宝典Oracle宝典Oracle宝典Oracle宝典Oracle宝典Oracle宝典Oracle宝典Oracle宝典Oracle宝典Oracle宝典Oracle宝典Oracle宝典Oracle宝典Oracle宝典Oracle宝典Oracle宝典Oracle宝典Oracle宝典...
希望能帮助你。由于博主自己花了2天时间才写出来用在报表里的完全sql展示,所以要点资源分。谢谢
oracle 9i所有版本最新下载链接 直接迅雷下载 Oracle9i Database Release 2 Enterprise/Standard/Personal Edition for Windows NT/2000/XP ...
ORACLE 获取周月季年 的第一天 和最后一天
使用了,ODP.NET 方式链接数据库,只要把Oracle.ManagedDataAccess.dll引入取代以前的Oracle.DataAccess.dll即可。 这种方式也是oracle公司提供的,稳定性要比之前那种更好,而且也是免安装客户端的,目前还没测试...
对于数据量较大的数据库我们可以选择对其执行RMAN周备份方案对其进行备份。周备份方案中采用的增量备份方法,缩短了日常的备份操作所占用的时间,减少了资源占用。本实践将介绍如何利用Windows的计划任务程序来实现...