盾怪网教程:是一个免费提供流行杀毒软件教程、在线学习分享的学习平台!

Oracle里时间的应用

时间:2024/9/5作者:未知来源:盾怪网教程人气:

[摘要]1、转换函数与date操作关系最大的就是两个转换函数:to_date(),to_char()to_date() 作用将字符类型按一定格式转化为日期类型:具体用法:to_date(''...
1、转换函数
与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'') 将得到具体的时间

多种日期格式:

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

即把当前时间按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小时格式下时间范围为: 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,当然还有很多,  
可查看  
select * from nls_session_parameters  
select * from V$NLS_PARAMETERS  

8.  
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_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  

11  
select to_char(sysdate,''hh:mi:ss'') TIME from all_objects  
注意:第一条记录的TIME 与最后一行是一样的  
可以建立一个函数来处理这个问题  
create or replace function sys_date return date is  
begin  
return sysdate;  
end;  

select to_char(sys_date,''hh:mi:ss'') from all_objects;  
12.  
获得小时数  

SELECT EXTRACT(HOUR FROM TIMESTAMP ''2001-02-16 2:38:40'') from offer  
SQL> select sysdate ,to_char(sysdate,''hh'') from dual;  

SYSDATE TO_CHAR(SYSDATE,''HH'')  
-------------------- ---------------------  
2003-10-13 19:35:21 07  

SQL> 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(  
newer_date-  
add_months( older_date,years*12+months )  
)  
) days  
from ( 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_date  
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''

关键词:Oracle里时间的应用




Copyright © 2012-2018 盾怪网教程(http://www.dunguai.com) .All Rights Reserved 网站地图 友情链接

免责声明:本站资源均来自互联网收集 如有侵犯到您利益的地方请及时联系管理删除,敬请见谅!

QQ:1006262270   邮箱:kfyvi376850063@126.com   手机版