前言:一般做数据统计写存储过程的时候相信好多朋友都对日期进行过处理,这是我当时对数据进行处理,做统计用的。当时做要求必须显示日期。尤其是对周进行统计的时候,特别恶心,于是把我以前对日期操作的存储过程中的sql,对大家分享一下。希望能够对大家能有所帮助。废话不多少了,直接上sql。
select a.* from (
select to_char(dateTime, 'yyyy-mm') as 年月,dateTime as 开始日期, dateTime+6 as 结束日期,
TO_CHAR(dateTime,'W')
as 第几周 from
(
select dateTime,Rownum rn from
(
with t as
(select rownum-1 rn from dual connect by rownum<=10000)
select to_date('2015-02-01','yyyy-mm-dd')+rn as dateTime from t where to_date('2015-02-01','yyyy-mm-dd')+rn<=SYSDATE
) b where to_char(b.dateTime, 'day') = '星期一'
)
) a
可以直接查询出有每个月中周一和周日的日期,然后属于第几周
with t as
(select rownum-1 rn from dual connect by rownum<=10000)
就是将(select rownum-1 rn from dual connect by rownum<=10000)查询出来的数据赋值给t,方便使用
with t as
(select rownum-1 rn from dual connect by rownum<=10000)
select to_date('2015-02-01','yyyy-mm-dd')+rn as dateTime from t where to_date('2015-02-01','yyyy-mm-dd')+rn<=SYSDATE
得到从2015年2月1日到2015年2月1日加上一万零一天之间的日期
select dateTime,Rownum rn from
(
with t as
(select rownum-1 rn from dual connect by rownum<=10000)
select to_date('2015-02-01','yyyy-mm-dd')+rn as dateTime from t where to_date('2015-02-01','yyyy-mm-dd')+rn<=SYSDATE
) b where to_char(b.dateTime, 'day') = '星期一'
这条sql可以得到2015年2月1日到2015年2月1日加上一万零一天之间中周一的日期
运行显示的效果:
希望对写存储过程做周报和日报的有点帮助。