这个算法的结果依赖于当前系统时间是什么时候…假设按照你说的,当前系统时间是星期六,那么它计算的结果就是说这个星期六是本月的第几个星期六。就拿12月来说,12月1日是星期六哦,所以你在12月1号查的时候它结果会是1哦,但是12月2日的时候,你查周日,它的结果仍然是1哦,因为是本月第一次出现的星期日哦!只有当你查12月8日的时候,才开始出现结果2哦…其实你可以在系统里选一些特殊的时间查一下就可以发现规律
select count( case when to_char(dt,’day’)='星期六' or to_char(dt,’day')='星期日' then 1
else 0 end) as cnt
from
(
select d1+lv-1 dt
from
(
select level lv
from dual
connect by level <= trunc(d2 -d1, 0)
) tt
) tm;
自己处理下临界值,这个是两边都取;如果是英文字符集,把星期改称英文,至于什么字符集,用这个判断
select to_char(sysdate, 'day') from dual;
看结果是汉字还是英文。
select to_char(sysdate,'day') day from dual;
会显示中文,例如: 星期二
select to_char(sysdate,'d') day from dual;
会显示是一周的第几天,不过外国星期日才是第一天,所以如果你把周一当第一天的话,需要
select to_char(sysdate-1,'d') day from dual;
select case
when mod(1 + 7 - to_char(trunc(sysdate, 'MM'), 'D'), 7) +
trunc(sysdate, 'MM') + 28 - last_day(sysdate) > 0 then
0
else
1
end + 4
from dual
把其中sysdate替换为你的日期即可
如果想知道一个月有几个星期一,把mod括号中第一个1改为2即可,其他日期类推
以上就是关于在oracle中怎么计算当天是本月的第几周全部的内容,包括:在oracle中怎么计算当天是本月的第几周、在oracle中如何用sql语句计算一段时间中的星期六和星期天的天数请大侠赐教!急求!!!!!!!!!!!、oracle中是否有返回某一天是星期几的函数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)