1. 日期和字符转换函数用法(to_dat e,to_cha r)
select to_cha r(sysdat e,'yyyy-mm-dd hh24:mi:ss') as nowTim e from dual; //日期转化为字符串
select to_cha r(sysdat e,'yyyy') as nowYea r from dual; //获取时间的年
select to_cha r(sysdat e,'mm') as nowMon th from dual; //获取时间的月
select to_cha r(sysdat e,'dd') as nowDay from dual; //获取时间的日
select to_cha r(sysdat e,'hh24') as nowHou r from dual; //获取时间的时
select to_cha r(sysdat e,'mi') as nowMin ute from dual; //获取时间的分
select to_cha r(sysdat e,'ss') as nowSec ond from dual; //获取时间的秒
select to_dat e('2004-05-07 13:23:44','yyyy-mm-dd hh24:mi:ss') from dual//
2. select to_cha r( to_dat e(222,'J'),'Jsp') from dual
显示TwoHundre d Twenty-Two
3. 求某天是星期几
select to_cha r(to_dat e('2002-08-26','yyyy-mm-dd'),'day') from dual;
星期一
select
to_cha r(to_dat e('2002-08-26','yyyy-mm-dd'),'day','NLS_DA TE_LA NGUAG E = Americ an') from dual;
monday
设置日期语言
ALTERSESSIO N SET NLS_DA TE_LA NGUAG E='AMERIC AN';
也可以这样
TO_DAT E ('2002-08-26', 'YYYY-mm-dd', 'NLS_DA TE_LA NGUAG E =
Americ an')
4. 两个日期间的天数
select floor(sysdat e - to_dat e('20020405','yyyymm dd')) from dual;
5. 时间为nul l的用法
select id, active_date from table1
UNION
select 1, TO_DAT E(null) from dual;
注意要用TO_DATE(null)
6.月份差
a_date betwee n to_dat e('20011201','yyyymm dd') and
to_dat e('20011231','yyyymm dd')
那么12月31号中午12点之后和12月1号的12点之前是不包含在这个范围
之内的。
所以,当时间需要精确的时候,觉得to_c har还是必要的
7. 日期格式冲突问题
输入的格式要看你安装的ORACL E字符集的类型, 比如: US7ASC II, date格式的类型就是: '01-Jan-01'
altersystem set NLS_DA TE_LA NGUAG E = Americ an
altersessio n set NLS_DA TE_LA NGUAG E = Americ an
或者在to_date中写
select
to_cha r(to_dat e('2002-08-26','yyyy-mm-dd'),'day','NLS_DA TE_LA NGUAG E = Americ an') from dual;
注意我这只是举了NLS_DATE_LANG UAGE,当然还有很多,
可查看
select * from nls_se ssion_para meter s
select * from V$NLS_PA RAMET ERS
8.
select count(*)
from ( select rownum-1 rnum
from all_ob jects
whererownum <= to_dat e('2002-02-28','yyyy-mm-dd') -
to_dat e('2002-
02-01','yyyy-mm-dd')+1
)
whereto_cha r( to_dat e('2002-02-01','yyyy-mm-dd')+rnum-1, 'D' ) not in ( '1', '7' )
查2002-02-28至2002-02-01间除星期一和七的天数c++trunc函数
在前后分别调用DBMS_UTIL ITY.GET_TI ME, 让后将结果相减(得到的是1/100秒, 而不是毫秒).
9. 查月份
select
months_betw een(to_dat e('01-31-1999','MM-DD-YYYY'),to_dat e('12-31-1998 ','MM-DD-YYYY')) "MONTHS" FROM DUAL;
1
select
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论