日期:2014-05-16  浏览次数:20397 次

ORACLE时间处理大全

?

举例说明:
1、日期字符转换函数to_date(),to_char()
?? SQL:select to_date('20080229132545','yyyy-mm-dd hh24:mi:ss') from dual ; RESULT:2008-2-29 13:25:45
?? SQL:select to_char(sysdate,'hh:mi:ss') TIME from dual; RESULT:10:51:43
2、
?? SQL:select to_char( to_date(2008,'J'),'Jsp') from dual; RESULT:Two Thousand Eight
3、查看哪天的年份
?? SQL:select to_char(to_date('2008-2-29','yyyy-mm-dd'),'year') from dual;???? RESULT:two thousand eight
?? SQL:select to_char(to_date('2008-2-29','yyyy-mm-dd'),'yyyy') from dual;???? RESULT:2008
4、查看哪天的月份
?? SQL:select to_char(to_date('2008-2-29','yyyy-mm-dd'),'month') from dual;RESULT:2月
?? SQL:select to_char(to_date('2008-2-29','yyyy-mm-dd'),'mm') from dual;??? RESULT:02
5、查看哪天是星期几
?? SQL:select to_char(to_date('2008-2-29','yyyy-mm-dd'),'day') from dual;????? RESULT:星期五
?? SQL:select to_char(to_date('2008-02-29','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual;
?? RESULT:friday
?? SQL:select to_char(to_date('2008-2-29','yyyy-mm-dd'),'dd') from dual;RESULT:29
6、查看两个日期之间的天数
?? SQL:select floor(sysdate - to_date('20080201','yyyymmdd')) from dual; RESULT:28
?? 注:sysdate是2008-02-29
7、取两个日期之间除了周六周日的天数
?? SQL:
?? select count(*)
?? from ( select rownum-1 rnum
?? from all_objects
?? where rownum <= to_date('2008-02-29','yyyy-mm-dd') - to_date('2008-
?? 02-01','yyyy-mm-dd')+1
?? )
?? where to_char( to_date('2008-02-01','yyyy-mm-dd')+rnum-1, 'D' )
?? not
?? in ( '6', '7' )
?? RESULT:
?? 21
8、查看两个日期之间的月 数
?? SQL:select months_between(to_date('2-29-2008', 'MM-DD-YYYY'),to_date('10-1-2007', 'MM-DD-YYYY')) "MONTHS" FROM DUAL;
?? RESULT:4.90322580645161
9、next_day函数
?? next_day(sysdate,6)是从当前开始下一个星期五。后面的数字是从星期日开始算起。
?? 1 2 3 4 5 6 7
?? 日 一 二 三 四 五 六
10、查看小时分秒
?? select sysdate ,to_char(sysdate,'hh') from dual;
?? select sysdate ,to_char(sysdate,'mi') from dual;
?? select sysdate ,to_char(sysdate,'ss') from dual;
11、取一年的天数(例如 今年2008)
?? SQL:select add_months(trunc(sysdate,'year'), 12) - trunc(sysdate,'year') from dual ;RESULT:366
12、 yyyy与rrrr的区别
?? yyyy 99 0099
?? rrrr 99 1999
?? yyyy 01 0001
?? rrrr 01 2001
13、一年的第几天
?? SQL:select TO_CHAR(SYSDATE,'DDD'),sysdate from dual ;RESULT:060
?? 注:sysdate是2008-02-29
14、add_months()用于从一个日期值增加或 减少一些月份
?? SQL:select add_months(sysdate,12) from dual;????????????????????? RESULT:2009-2-28 11:23:50
15、extract()找出日期或间隔值的字段值
?? SQL:select extract(month from sysdate) from dual; RESULT:2
?? SQL:select extract(year from add_months(sysdate,36)) from dual; RESULT:2011
16、last_day()返回包含了日期参数的月份的最后一天的日期
?? SQL:select last_day(sysdate) from dual;???????????????????????????????????????? RESULT:2008-2-29

?

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

TO_DATE格式
  Day:   
  dd    number     12
  dy    abbreviated  fri     
  day   spelled out  friday            
  ddspth  spelled out,  ordinal  twelfth