您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > oracle-取时间差-Oracle函数大全
oracle取时间差Oracle函数大全作者:互联网来源:互联网点击数:248更新时间:2010年10月24日一.Oracle日期函数1、求出本星期的第一天日期(以星期一为第一天)selecttrunc(sysdate,'DD')-to_char(sysdate,'D')+2fromdual;2、求出本星期的第七天日期(以星期日为第七天)selecttrunc(sysdate,'DD')-to_char(sysdate,'D')+8fromdual;--根据日期格试,取到值到星期几selectto_char(to_date('2002-08-26','yyyy-mm-dd'),'day')fromdual;1。Sysdate当前日期和时间SQLSelectsysdatefromdual;SYSDATE----------21-6月-052。Last_day本月最后一天SQLSelectlast_day(sysdate)fromdual;LAST_DAY(S----------30-6月-053。Add_months(d,n)当前日期d后推n个月用于从一个日期值增加或减少一些月份date_value:=add_months(date_value,number_of_months)SQLSelectadd_months(sysdate,2)fromdual;ADD_MONTHS----------21-8月-054。Months_between(f,s)日期f和s间相差月数SQLselectmonths_between(sysdate,to_date('2005-11-12','yyyy-mm-dd'))fromdual;MONTHS_BETWEEN(SYSDATE,TO_DATE('2005-11-12','YYYY-MM-DD'))-----------------------------------------------------------4.69667415。NEXT_DAY(d,day_of_week)返回由day_of_week命名的,在变量d指定的日期之后的第一个工作日的日期。参数day_of_week必须为该星期中的某一天。SQLSELECTnext_day(to_date('20050620','YYYYMMDD'),1)FROMdual;NEXT_DAY(T----------26-6月-056。current_date()返回当前会话时区中的当前日期date_value:=current_dateSQLcolumnsessiontimezonefora15SQLselectsessiontimezone,current_datefromdual;SESSIONTIMEZONECURRENT_DA-------------------------+08:0013-11月-03SQLaltersessionsettime_zone='-11:00'2/会话已更改。SQLselectsessiontimezone,current_timestampfromdual;SESSIONTIMEZONECURRENT_TIMESTAMP----------------------------------------------------11:0012-11月-0304.59.13.668000下午-11:007。current_timestamp()以timestampwithtimezone数据类型返回当前会话时区中的当前日期SQLselectcurrent_timestampfromdual;CURRENT_TIMESTAMP---------------------------------------------------------------------------21-6月-0510.13.08.220589上午+08:008。dbtimezone()返回时区SQLselectdbtimezonefromdual;DBTIME-------08:009。extract()找出日期或间隔值的字段值date_value:=extract(date_fieldfrom[datetime_value|interval_value])SQLselectextract(monthfromsysdate)ThisMonthfromdual;ThisMonth----------6SQLselectextract(yearfromadd_months(sysdate,36))Yearsfromdual;Years----------200810。localtimestamp()返回会话中的日期和时间SQLselectlocaltimestampfromdual;LOCALTIMESTAMP---------------------------------------------------------------------------21-6月-0510.18.15.855652上午常用日期数据格式(该段为摘抄)Y或YY或YYY年的最后一位,两位或三位Selectto_char(sysdate,’YYY’)fromdual;002表示2002年SYEAR或YEARSYEAR使公元前的年份前加一负号Selectto_char(sysdate,’SYEAR’)fromdual;-1112表示公元前1112年Q季度,1~3月为第一季度Selectto_char(sysdate,’Q’)fromdual;2表示第二季度①MM月份数Selectto_char(sysdate,’MM’)fromdual;12表示12月RM月份的罗马表示Selectto_char(sysdate,’RM’)fromdual;IV表示4月Month用9个字符长度表示的月份名Selectto_char(sysdate,’Month’)fromdual;May后跟6个空格表示5月WW当年第几周Selectto_char(sysdate,’WW’)fromdual;24表示2002年6月13日为第24周W本月第几周Selectto_char(sysdate,’W’)fromdual;2002年10月1日为第1周DDD当年第几,1月1日为001,2月1日为032Selectto_char(sysdate,’DDD’)fromdual;3632002年12月29日为第363天DD当月第几天Selectto_char(sysdate,’DD’)fromdual;0410月4日为第4天D周内第几天Selectto_char(sysdate,’D’)fromdual;52002年3月14日为星期一DY周内第几天缩写Selectto_char(sysdate,’DY’)fromdual;SUN2002年3月24日为星期天HH或HH1212进制小时数Selectto_char(sysdate,’HH’)fromdual;02午夜2点过8分为02HH2424小时制Selectto_char(sysdate,’HH24’)fromdual;14下午2点08分为14MI分钟数(0~59)Selectto_char(sysdate,’MI’)fromdual;17下午4点17分SS秒数(0~59)Selectto_char(sysdate,’SS’)fromdual;2211点3分22秒提示注意不要将MM格式用于分钟(分钟应该使用MI)。MM是用于月份的格式,将它用于分钟也能工作,但结果是错误的。现在给出一些实践后的用法:1。上月末天:SQLselectto_char(add_months(last_day(sysdate),-1),'yyyy-MM-dd')LastDayfromdual;LASTDAY----------2005-05-312。上月今天SQLselectto_char(add_months(sysdate,-1),'yyyy-MM-dd')PreTodayfromdual;PRETODAY----------2005-05-213.上月首天SQLselectto_char(add_months(last_day(sysdate)+1,-2),'yyyy-MM-dd')firstDayfromdual;FIRSTDAY----------2005-05-014.按照每周进行统计SQLselectto_char(sysdate,'ww')fromdualgroupbyto_char(sysdate,'ww');TO--255。按照每月进行统计SQLselectto_char(sysdate,'mm')fromdualgroupbyto_char(sysdate,'mm');TO--066。按照每季度进行统计SQLselectto_char(sysdate,'q')fromdualgroupbyto_char(sysdate,'q');T-27。按照每年进行统计SQLselectto_char(sysdate,'yyyy')fromdualgroupbyto_char(sysdate,'yyyy');TO_C----20058.要找到某月中所有周五的具体日期selectto_char(t.d,'YY-MM-DD')from(selecttrunc(sysdate,'MM')+rownum-1asdfromdba_objectswhererownum32)twhereto_char(t.d,'MM')=to_char(sysdate,'MM')--找出当前月份的周五的日期andtrim(to_char(t.d,'Day'))='星期五'--------03-05-0203-05-0903-05-1603-05-2303-05-30如果把whereto_char(t.d,'MM')=to_char(sysdate,'MM')改成sysdate-90,即为查找当前月份的前三个月中的每周五的日期。9.oracle中时间运算内容如下:1、oracle支持对日期进行运算2、日期运算时是以天为单位进行的3、当需要以分秒等更小的单位算值时,按时间进制进行转换即可4、进行时间进制转换时注意加括号,否则会出问题SQLaltersessionsetnls_date_format='yyyy-mm-ddhh:mi:ss';会话已更改。SQLsetserveroutonSQLdeclare2DateValuedate;3begin4selectsysdateintoDateValuefromdual;5dbms_output.put_line('源时间:'||to_char(DateValue));6dbms_output.put_line('源时间减1天:'||to_char(DateValue-1));7dbms_output.put_line('源时间减1天1小时:'||to_char(DateValue-1-1/24));8dbms_output.put_line('源时间减1天1小时1分:'||to_char(DateValue-1-1/24-1/(24*60)));9dbms_output.put_line('源时间减1天1小时1分1秒:'||to_char(DateValue-1-1/24-1/(24*60)-1/(24*60*60)));10end;11/源时间:2003-12-2911:53:41源时间减1天:2003-12-2811:53:41源时间减1天1小时:2003-12-2810:53:41源时间减1天1小时1分:2003-12-2810:52:41源时间减1天1小时1分1秒:2003-12-2810:52:40PL/SQL过程已成功完成。在Oracle中实现时间相加处理--名称:Add_T
本文标题:oracle-取时间差-Oracle函数大全
链接地址:https://www.777doc.com/doc-5892557 .html