最近遇到业务需求,需要按周统计数据。
思考再三想到可以使用每周周一来计算。
故写出如下获得系统当前月份所有周一的语句。
select * from (
--转化成周一去重
select distinct trunc(t.day,'iw') as mon from (
--获取本月所有日期集合
SELECT trunc(sysdate, 'mm') + LEVEL - 1 DAY
FROM DUAL
CONNECT BY trunc(sysdate, 'mm') + LEVEL - 1 <=
last_day(trunc(sysdate))
)t
)a
--移除非本月的周一
where trunc(a.mon, 'mm') = trunc(sysdate, 'mm')
ORDER BY MON
注:
trunc(sysdate,'iw') 语句可以获取本周周一的日期 (date类型)
trunc(sysdate,'iw') +1 可以获取本周周二的日期。
以此类推
(可以把sysdate换成其它时间)