《oracle中的todate和tochar函数》由会员分享,可在线阅读,更多相关《oracle中的todate和tochar函数(11页珍藏版)》请在金锄头文库上搜索。
1、Oracle 中的 TO_DATE 和 TO_CHAR 函数30分钟:sysdate+1/48 1个小时:sysdate+1/24 一天:sysdate+1 一个星期: sysdate+7 每个星期五中午: NEXT_DAY(TRUNC(SYSDATE),星期五) + 12/24 一个月:add_months(sysdate,1) -可以为正负数 一年:add_months(sysdate,12) 月份加减:select to_char(add_months(sysdate-1),yyyymm) from dual; 日期加减:select to_char(sysdate-1,yyyymmdd
2、) from dual; select sysdate from dual;得到是当前时间。如果不加任何转化的话,默认的天。 select syddate+1 from dual;-后一天 select sydate-1 from dual;-前一天 select sysdate+30/60/24 from dual;-后30分钟 select sysdate-30/60/24 from dual;-前30分钟oracle to_char 时间格式 日期格式参数含义说明D一周中的星期几DAY天的名字,使用空格填充到9个字符DD月中的第几天DDD年中的第几天DY 天的简写名IWISO标准的年中的
3、第几周IYYYISO标准的四位年份YYYY四位年份YYY,YY,Y年份的最后三位,两位,一位HH小时,按12小时计HH24小时,按24小时计MI分SS秒MM月Mon月份的简写Month月份的全名W该月的第几个星期WW年中的第几个星期用于日期/时间 to_char() 版本的Format-pictures。 Format-picture描述HH 一天中的小时 (01-12) HH12 一天中的小时 (01-12) MI 分钟 (00-59) SS 秒 (00-59) SSSS 过了午夜的秒 (0-86399) Y,YYY 带逗号的年 (4 或更多位)YYYY 年 (4 或更多位)YYY 年的最后
4、三位YY 年的最后两位Y 年的最后一位MONTH 完整的月份名(9字符)-所有字符大写Month 完整的月份名(9字符)-首字符大写month 完整的月份名(9字符)-所有字符小写MON 缩写的月份名(3字符)-所有字符大写Mon 缩写的月份名(3字符)-首字符大写mon 缩写的月份名(3字符)-所有字符小写MM 月份(01-12) DAY 完整的日期名(9字符)-所有字符大写Day 完整的日期名(9字符)-首字符大写day 完整的日期名(9字符)-所有字符小写DY 缩写的日期名(3字符)-所有字符大写Dy 缩写的日期名(3字符)-首字符大写dy 缩写的日期名(3字符)-所有字符小写DDD 一
5、年中的日子 (001-366) DD 一月中的日子 (01-31) D 一周中的日子 (1-7; SUN=1) W 月中的周WW 年中的周CC 世纪(两位)J julian 日子(从4712 BC 年一月一日以来的日子) Q 季度RM 罗马数字的月份 (I-XII; I=JAN) oracle 中 TO_DATE 函数的时间格式,以 2008-09-10 23:45:56 为例格式 说明 显示值 备注 Year(年): yy two digits(两位年) 08 yyythree digits(三位年) 008 yyyy four digits(四位年) 2008 Month(月): mm n
6、umber(两位月) 09 mon abbreviated(字符集表示) 9月 若是英文版, 则显示 sep month spelled out(字符集表示) 9月 若是英文版, 则显示 september Day(日): dd number(当月第几天) 10 ddd number(当年第几天) 254 dy abbreviated(当周第几天简写) 星期三 若是英文版, 则显示 wed day spelled out(当周第几天全写) 星期三 若是英文版, 则显示 wednesday ddspth spelled out, ordinal twelfth tenth Hour(时): hh
7、 two digits(12小时进制) 11 hh24 two digits(24小时进制) 23 Minute(分): mi two digits(60进制) 45 Second(秒): ss two digits(60进制) 56 其他: Q digit(季度) 3 WW digit(当年第几周) 37 W digit(当月第几周) 2 说明: 12小时格式下时间范围为: 1:00:00 - 12:59:59(12 小时制下的 12:59:59 对应 24 小时制下的 00:59:59) 24小时格式下时间范围为: 0:00:00 - 23:59:59 1. 日期和字符转换函数用法(to_
8、date,to_char)select to_char(sysdate,yyyy-mm-dd hh24:mi:ss) as nowTime from dual; /日期转化为字符串 select to_char(sysdate,yyyy) as nowYear from dual; /获取时间的年 select to_char(sysdate,mm) as nowMonth from dual; /获取时间的月 select to_char(sysdate,dd) as nowDay from dual; /获取时间的日 select to_char(sysdate,hh24) as nowH
9、our from dual; /获取时间的时 select to_char(sysdate,mi) as nowMinute from dual; /获取时间的分 select to_char(sysdate,ss) as nowSecond from dual; /获取时间的秒select to_date(2004-05-07 13:23:44,yyyy-mm-dd hh24:mi:ss) from dual/2. select to_char( to_date(222,J),Jsp) from dual 显示Two Hundred Twenty-Two3. 求某天是星期几 select t
10、o_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 NLS_DATE_LANGUAGE=AMERICAN; 也可以这样 TO_DATE (2002-08-26, YYYY-mm-dd, NLS_DATE_LANGUAGE = American)4. 两个日期间的天数 select floo
11、r(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 to_date(20011201,yyyymmdd) and to_date(20011231,yyyymmdd) 那么12月31号中午12点之后和12月1号的12点之前是不包含在这个范围之内的。 所以,当时间需要精确的时候,觉得to_char还
12、是必要的 7. 日期格式冲突问题 输入的格式要看你安装的ORACLE字符集的类型, 比如: US7ASCII, date格式的类型就是: 01-Jan-01 alter system set NLS_DATE_LANGUAGE = American alter session set NLS_DATE_LANGUAGE = American 或者在to_date中写 select to_char(to_date(2002-08-26,yyyy-mm-dd),day,NLS_DATE_LANGUAGE = American) from dual; 注意我这只是举了NLS_DATE_LANGUAG
13、E,当然还有很多, 可查看 select * from nls_session_parameters select * from V$NLS_PARAMETERS8. select count(*) from ( select rownum-1 rnum from all_objects where rownum <= to_date(2002-02-28,yyyy-mm-dd) - to_date(2002- 02-01,yyyy-mm-dd)+1 ) where to_char( to_date(2002-02-01,yyyy-mm-dd)+rnum-1, D ) not in ( 1, 7 ) 查找2002-02-28至2002-02-01间除星期一和七的天数 在前后分别调用DBMS_UTILITY.GET_TIME, 让后将结果相减(得到的是1/100秒, 而不是毫秒).9. 查找月份 select months_between(to_date(01-31-1999,MM-DD-YYYY),to_d