以下的文章主要向我们介绍的是如何对Oracle时间日期的操作,以及如何用Oracle时间日期操作来计算工作日的方法的集体描述,以下是文章的具体介绍,望你浏览完以下的内容会有所收获。
Oracle时间日期操作
sysdate+(5/24/60/60) 在系统时间基础上延迟5秒
sysdate+5/24/60 在系统时间基础上延迟5分钟
sysdate+5/24 在系统时间基础上延迟5小时
sysdate+5 在系统时间基础上延迟5天
add_months(sysdate,-5) 在系统时间基础上延迟5月
add_months(sysdate,-5*12) 在系统时间基础上延迟5年
上月末的日期:
selectlast_day(add_months(sysdate,-1))fromdual;
本月的***一秒:
selecttrunc(add_months(sysdate,1),'MM')-1/24/60/60fromdual
本周星期一的日期:
selecttrunc(sysdate,'day')+1fromdual
年初至今的天数:
selectceil(sysdate-trunc(sysdate,'year'))fromdual;
今天是今年的第几周 :
selectto_char(sysdate,'fmww')fromdual
今天是本月的第几周:
SELECTTO_CHAR(SYSDATE,'WW')- TO_CHAR(TRUNC(SYSDATE,'MM'),'WW') +1AS"weekOfMon"FROMdual
本月的天数
SELECTto_char(last_day(SYSDATE),'dd')daysFROMdual
今年的天数
selectadd_months(trunc(sysdate,'year'),12) -trunc(sysdate,'year')fromdual
下个星期一的日期
SELECTNext_day(SYSDATE,'monday')FROMdual
如何用Oracle时间日期操作来计算工作日方法
createtablet(sdate,edate); altersessionsetnls_date_format='yyyy-mm-dd'; insertintotvalues('2003-03-01','2003-03-03'); insertintotvalues('2003-03-02','2003-03-03'); insertintotvalues('2003-03-07','2003-03-08'); insertintotvalues('2003-03-07','2003-03-09'); insertintotvalues('2003-03-05','2003-03-07'); insertintotvalues('2003-02-01','2003-03-31');
这里假定日期都是不带时间的,否则在所有日期前加trunc即可。
selects,e,e-s+1total_days, trunc((e-s+1)/7)*5+length (replace(substr('01111100111110', to_char(s,'d'),mod(e-s+1,7)),'0',''))work_days fromt; droptablet;v
相关文章
标签:Oracle