最新oracle日期格式总结.docx

上传人:豆**** 文档编号:35400601 上传时间:2022-08-21 格式:DOCX 页数:41 大小:133.63KB
返回 下载 相关 举报
最新oracle日期格式总结.docx_第1页
第1页 / 共41页
最新oracle日期格式总结.docx_第2页
第2页 / 共41页
点击查看更多>>
资源描述

《最新oracle日期格式总结.docx》由会员分享,可在线阅读,更多相关《最新oracle日期格式总结.docx(41页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateoracle日期格式总结oracle日期格式总结select to_char(sysdate,yyyy)|年|to_char(sysdate,mm)|月|to_char(sysdate,dd)|日|to_char(sysdate,hh24)|时|to_char(sysdate,mi)|分|to_char(sysdate,ss)|秒from dual在oracle中处理

2、日期大全 TO_DATE格式 Day: dd number 12 dy abbreviated fri day spelled out friday ddspth spelled out, ordinal twelfth Month: mm number 03 mon abbreviated mar month spelled out march Year: yy two digits 98 yyyy four digits 1998 24小时格式下时间范围为: 0:00:00 - 23:59:59. 12小时格式下时间范围为: 1:00:00 - 12:59:59 .1. 日期和字符转换函数

3、用法(to_date,to_char)2. select to_char( to_date(222,J),Jsp) from dual 显示Two Hundred Twenty-Two 3. 求某天是星期几和设置语言格式select to_char(to_date(2002-08-26,yyyy-mm-dd),day) from dual; 星期一 select to_char(to_date(2002-08-26,yyyy-mm-dd),day,NLS_DATE_LANGUAGE = American) from dual; monday 设置日期语言 ALTER SESSION SET N

4、LS_DATE_LANGUAGE=AMERICAN; 也可以这样 TO_DATE (2002-08-26, YYYY-mm-dd, NLS_DATE_LANGUAGE = American) 4. 两个日期间的天数 select floor(sysdate - to_date(20020405,yyyymmdd) from dual; 5. 时间为null的用法select id, active_date from table1 UNION select 1, TO_DATE(null) from dual; 注意要用TO_DATE(null) 6. 时间的范围a_date between t

5、o_date(20011201,yyyymmdd) and to_date(20011231,yyyymmdd) 那么12月31号中午12点之后和12月1号的12点之前是不包含在这个范围之内的。 所以,当时间需要精确的时候,觉得to_char还是必要的 7. 日期格式冲突问题 输入的格式要看你安装的ORACLE字符集的类型, 比如: US7ASCII, date格式的类型就是: 01-Jan-01 alter system set NLS_DATE_LANGUAGE = American alter session set NLS_DATE_LANGUAGE = American 或者在to_

6、date中写 select to_char(to_date(2002-08-26,yyyy-mm-dd),day,NLS_DATE_LANGUAGE = American) from dual; 注意我这只是举了NLS_DATE_LANGUAGE,当然还有很多, 可查看 select * from nls_session_parameters select * from V$NLS_PARAMETERS 8. 查找2002-02-28至2002-02-01间除星期一和七的天数select count(*) from ( select rownum-1 rnum from all_objects

7、 where rownum select sysdate ,to_char(sysdate,hh) from dual; SYSDATE TO_CHAR(SYSDATE,HH) - - 2003-10-13 19:35:21 07 select sysdate ,to_char(sysdate,hh24) from dual; SYSDATE TO_CHAR(SYSDATE,HH24) - - 2003-10-13 19:35:21 19 获取年月日与此类似 13. 年月日的处理 select older_date, newer_date, years, months, abs( trunc(

8、 newer_date- add_months( older_date,years*12+months ) ) ) daysfrom ( select trunc(months_between( newer_date, older_date )/12) YEARS, mod(trunc(months_between( newer_date, older_date ), 12 ) MONTHS, newer_date, older_date from ( select hiredate older_date,add_months(hiredate,rownum)+rownum newer_dat

9、e from emp ) ) 14.处理月份天数不定的办法 select to_char(add_months(last_day(sysdate) +1, -2), yyyymmdd),last_day(sysdate) from dual 16. 找出今年的天数 select add_months(trunc(sysdate,year), 12) - trunc(sysdate,year) from dual 闰年的处理方法 to_char( last_day( to_date(02 | :year,mmyyyy) ), dd ) 如果是28就不是闰年 17. yyyy与rrrr的区别 YY

10、YY99 TO_C - - yyyy 99 0099 rrrr 99 1999 yyyy 01 0001 rrrr 01 2001 18.不同时区的处理 select to_char( NEW_TIME( sysdate, GMT,EST), dd/mm/yyyy hh:mi:ss) ,sysdate from dual; 19. 5秒钟一个间隔 Select TO_DATE(FLOOR(TO_CHAR(sysdate,SSSSS)/300) * 300,SSSSS) ,TO_CHAR(sysdate,SSSSS) from dual 2002-11-1 9:55:00 35786 SSSSS

11、表示5位秒数 20. 一年的第几天 select TO_CHAR(SYSDATE,DDD),sysdate from dual 310 2002-11-6 10:03:51 21.计算小时,分,秒,毫秒 select Days, A, TRUNC(A*24) Hours, TRUNC(A*24*60 - 60*TRUNC(A*24) Minutes, TRUNC(A*24*60*60 - 60*TRUNC(A*24*60) Seconds, TRUNC(A*24*60*60*100 - 100*TRUNC(A*24*60*60) mSeconds from ( select trunc(sys

12、date) Days, sysdate - trunc(sysdate) A from dual ) select * from tabname order by decode(mode,FIFO,1,-1)*to_char(rq,yyyymmddhh24miss); / floor(date2-date1) /365) 作为年 floor(date2-date1, 365) /30) 作为月 mod(mod(date2-date1, 365), 30)作为日. 23.next_day函数 next_day(sysdate,6)是从当前开始下一个星期五。后面的数字是从星期日开始算起。1 2 3

13、 4 5 6 7 日 一 二 三 四 五 六oracle中有很多关于日期的函数在oracle中有很多关于日期的函数,如: 1、add_months()用于从一个日期值增加或减少一些月份 date_value:=add_months(date_value,number_of_months) 例: SQL select add_months(sysdate,12) Next Year from dual; Next Year - 13-11月-04 SQL select add_months(sysdate,112) Last Year from dual; Last Year - 13-3月 -

14、13 SQL 2、current_date()返回当前会放时区中的当前日期 date_value:=current_date SQL column sessiontimezone for a15 SQL select sessiontimezone,current_date from dual; SESSIONTIMEZONE CURRENT_DA - - +08:00 13-11月-03 SQL alter session set time_zone=-11:00 2 / 会话已更改。 SQL select sessiontimezone,current_timestamp from dua

15、l; SESSIONTIMEZONE CURRENT_TIMESTAMP - - -11:00 12-11月-03 04.59.13.668000 下午 -11: 00 SQL 3、current_timestamp()以timestamp with time zone数据类型返回当前会放时区中的当前日期 timestamp_with_time_zone_value:=current_timestamp(timestamp_precision) SQL column sessiontimezone for a15 SQL column current_timestamp format a36

16、SQL select sessiontimezone,current_timestamp from dual; SESSIONTIMEZONE CURRENT_TIMESTAMP - - +08:00 13-11月-03 11.56.28.160000 上午 +08: 00 SQL alter session set time_zone=-11:00 2 / 会话已更改。 SQL select sessiontimezone,current_timestamp from dual; SESSIONTIMEZONE CURRENT_TIMESTAMP - - -11:00 12-11月-03 0

17、4.58.00.243000 下午 -11: 00 SQL 4、dbtimezone()返回时区 varchar_value:=dbtimezone SQL select dbtimezone from dual; DBTIME - -07:00 SQL 5、extract()找出日期或间隔值的字段值 date_value:=extract(date_field from datetime_value|interval_value) SQL select extract(month from sysdate) This Month from dual; This Month - 11 SQL

18、select extract(year from add_months(sysdate,36) 3 Years Out from dual; 3 Years Out - 2006 SQL 6、last_day()返回包含了日期参数的月份的最后一天的日期 date_value:=last_day(date_value) SQL select last_day(date2000-02-01) Leap Yr? from dual; Leap Yr? - 29-2月 -00 SQL select last_day(sysdate) Last day of this month from dual;

19、Last day o - 30-11月-03 SQL 7、localtimestamp()返回会话中的日期和时间 timestamp_value:=localtimestamp SQL column localtimestamp format a28 SQL select localtimestamp from dual; LOCALTIMESTAMP - 13-11月-03 12.09.15.433000 下午 SQL select localtimestamp,current_timestamp from dual; LOCALTIMESTAMP CURRENT_TIMESTAMP - -

20、 13-11月-03 12.09.31.006000 13-11月-03 12.09.31.006000 下午 +08: 下午 00 SQL alter session set time_zone=-11:00; 会话已更改。 SQL select localtimestamp,to_char(sysdate,DD-MM-YYYY HH:MI:SS AM) SYSDATE from dual; LOCALTIMESTAMP SYSDATE - - 12-11月-03 05.11.31.259000 13-11-2003 12:11:31 下午 下午 SQL 8、months_between()

21、判断两个日期之间的月份数量 number_value:=months_between(date_value,date_value) SQL select months_between(sysdate,date1971-05-18) from dual; MONTHS_BETWEEN(SYSDATE,DATE1971-05-18) - 389.855143 SQL select months_between(sysdate,date2001-01-01) from dual; MONTHS_BETWEEN(SYSDATE,DATE2001-01-01) - 34.4035409 SQL 9、ne

22、xt_day()给定一个日期值,返回由第二个参数指出的日子第一次出现在的日期值(应返回相应日子的名称字符串)與周相關日期函數1.查询某周的第一天select trunc(decode(ww, 53, to_date(yy | 3112, yyyyddmm), to_date(yy | - | to_char(ww * 7), yyyy-ddd), d) last_dayfrom (select substr(2004-32, 1, 4) yy, to_number(substr(2004-32, 6) ww from dual)select trunc(to_date(substr(2003-

23、01,1,5)|to_char(to_number(substr(2003-01,6)*7),yyyy-ddd),d)-6 first_day from dualselect min(v_date) from(select (to_date(200201,yyyymm) + rownum) v_datefrom all_tableswhere rownum 370)where to_char(v_date,yyyy-iw) = 2002-492.查询某周的最后一天select trunc(decode(ww, 53, to_date(yy | 3112, yyyyddmm), to_date(

24、yy | - | to_char(ww * 7), yyyy-ddd), d) - 6 first_dayfrom (select substr(2004-33, 1, 4) yy, to_number(substr(2004-33, 6) ww from dual) select trunc(to_date(substr(2003-01,1,5)|to_char(to_number(substr(2003-01,6)*7),yyyy-ddd),d) last_day from dualselect max(v_date) from(select (to_date(200408,yyyymm)

25、 + rownum) v_datefrom all_tableswhere rownum 370)where to_char(v_date,yyyy-iw) = 2004-333.查询某周的日期select min_date, to_char(min_date,day) day from(select to_date(substr(2004-33,1,4)|001+rownum-1,yyyyddd) min_date from all_tableswhere rownum = decode(mod(to_number(substr(2004-33,1,4),4),0,366,365) unio

26、nselect to_date(substr(2004-33,1,4)-1| decode(mod(to_number(substr(2004-33,1,4)-1,4),0,359,358)+rownum,yyyyddd) min_date from all_tables where rownum = 7unionselect to_date(substr(2004-33,1,4)+1|001+rownum-1,yyyyddd) min_date from all_tables where rownum alter session set nls_date_format=yyyy-mm-dd

27、hh:mi:ss; 会话已更改。 SQL set serverout on SQL declare 2 DateValue date; 3 begin 4 select sysdate into DateValue from dual; 5 dbms_output.put_line(源时间:|to_char(DateValue); 6 dbms_output.put_line(源时间减1天:|to_char(DateValue-1); 7 dbms_output.put_line(源时间减1天1小时:|to_char(DateValue-1-1/24); 8 dbms_output.put_l

28、ine(源时间减1天1小时1分:|to_char(DateValue-1-1/24-1/(24*60); 9 dbms_output.put_line(源时间减1天1小时1分1秒:|to_char(DateValue-1-1/24-1/(24*60)-1/(24*60*6 0); 10 end; 11 / 源时间:2003-12-29 11:53:41 源时间减1天:2003-12-28 11:53:41 源时间减1天1小时:2003-12-28 10:53:41 源时间减1天1小时1分:2003-12-28 10:52:41 源时间减1天1小时1分1秒:2003-12-28 10:52:40 -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 成人自考

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁