• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Oracle时间日期加减计算

mysql 搞代码 4年前 (2022-01-09) 19次浏览 已收录 0个评论

上月末的日期:select last_day(add_months(sysdate, -1)) from dual;
本月的最后一秒:select trunc(add_months(sysdate,1),’mm’) – 1/24/60/60 from dual
本周星期一的日期:select trunc(sysdate,’day’)+1 from dual

年初至今的天数:select ceil(sysdate – trunc(sysdate, ‘year’)) from dual;

今天是今年的第几周 :select to_char(sysdate,’fmww’) from dual
今天是本月的第几周:select to_char(sysdate,’ww’) – to_char(trunc(sysdate,’mm’),’ww’) + 1 as “weekofmon” from dual

本月的天数
select to_char(last_day(sysdate),’dd’) days from dual
今年的天数
select add_months(trunc(sysdate,’year’), 12) – trunc(sysdate,’year’) from dual
下个星期一的日期
select next_day(sysdate,’monday’) from dual

========================================本文来源[email protected]搞@^&代*@码)网5====

–计算工作日方法

create table t(s date,e date);
alter session set nls_date_format = ‘yyyy-mm-dd’;
insert into t values(‘2003-03-01′,’2003-03-03’);
insert into t values(‘2003-03-02′,’2003-03-03’);
insert into t values(‘2003-03-07′,’2003-03-08’);
insert into t values(‘2003-03-07′,’2003-03-09’);
insert into t values(‘2003-03-05′,’2003-03-07’);
insert into t values(‘2003-02-01′,’2003-03-31’);

— 这里假定日期都是不带时间的,否则在所有日期前加trunc即可。
select s,e,e-s+1 total_days,
trunc((e-s+1)/7)*5 + length(replace(substr(‘01111100111110′,to_char(s,’d’),mod(e-s+1,7)),’0′,”)) work_days
from t;

— drop table t;

================================================================================

判断当前时间是上午下午还是晚上

select case
when to_number(to_char(sysdate,’hh24′)) between 6 and 11 then ‘上午’
when to_number(to_char(sysdate,’hh24′)) between 11 and 17 then ‘下午’
when to_number(to_char(sysdate,’hh24′)) between 17 and 21 then ‘晚上’
end
from dual;


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Oracle时间日期加减计算

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址