Oracle中的时间转换

本文主要介绍的是Oracle时间的实际应用中的转换函数和date实际操作的相关关系,我们都知道转换函数和date实际操作的相关关系最大的就是两个可以转换函数即,to_date(),to_char()
to_date() 作用将字符类型按一定格式转化为日期类型。
具体用法:to_date(''2004-11-27'',''yyyy-mm-dd''),前者为字符串,后者为转换日期格式,注意,前后两者要以一对应。
如;to_date(''2004-11-27 13:34:43'', ''yyyy-mm-dd hh24:mi:ss'') 将得到具体的Oracle时间
多种日期格式:
YYYY:四位表示的年份
YYY,YY,Y:年份的最后三位、两位或一位,缺省为当前世纪
MM:01~12的月份编号
MONTH:九个字符表示的月份,右边用空格填补
MON:三位字符的月份缩写
WW:一年中的星期
D:星期中的第几天
DD:月份中的第几天
DDD:年所中的第几天
DAY:九个字符表示的天的全称,右边用空格补齐
HH,HH12:一天中的第几个小时,12进制表示法
HH24:一天中的第几个小时,取值为00~23
MI:一小时中的分钟
SS:一分钟中的秒
SSSS:从午夜开始过去的秒数
to_char():将日期转按一定格式换成字符类型
SQL> select to_char(sysdate,''yyyy-mm-dd hh24:mi:ss'') time from dual;  
TIME  
2004-10-08 15:22:58 
即把当前Oracle时间按yyyy-mm-dd hh24:mi:ss格式转换成字符类型
在oracle中处理日期大全
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小时格式下Oracle时间范围为: 1:00:00 - 12:59:59 ....
[ZT]日期和??函???
1.
日期和字符转换函数用法(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 NLS_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 to_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_date中写
select to_char(to_date(''2002-08-26'',''yyyy-mm-dd''),
''day'',''NLS_DATE_LANGUAGE = American'') from dual;  
注意我这只是举了NLS_DATE_LANGUAGE,当然还有很多,
可查看
q查找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_date(''12-31-1998'',''MM-DD-YYYY'')) "MONTHS" FROM DUAL;   
1  
select months_between(to_date(''02-01-1999'',''MM-DD-YYYY''),   
to_date(''12-31-1998'',''MM-DD-YYYY'')) "MONTHS" FROM DUAL;  
1.03225806451613   
 
10. Next_day的用法
Next_day(date, day)  
Monday-Sunday, for format code DAY   
Mon-Sun, for format code DY   

1-7, for format code D  



注:在网上找的一些文章,感谢提供者,本博客所有内容仅供自身以及各位朋友参考,不用于其他用途

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值