现在的位置: 首页 > 综合 > 正文

oracle日期函数

2014年01月24日 ⁄ 综合 ⁄ 共 1646字 ⁄ 字号 评论关闭

一。日期类型格式修改

select sysdate from dual;
SYSDATE
---------
01-MAY-07
日期的显示格式和客户端的配置相关
查看当前的日期显示格式
select * from nls_session_parameters where parameter='NLS_DATE_FORMAT';
PARAMETER VALUE
------------------------- ---------
NLS_DATE_FORMAT DD-MON-RR
如果你的显示是如下样子:
PARAMETER
----------------
VALUE
----------------
NLS_DATE_FORMAT
DD-MON-RR
这表示折行了,请限制value列的宽度
col value for a20
代表的含义是凡是列的名称是value的,都按照20个宽度来显示,你想取消该列的定义
col value clear,其中col是column的缩写。你想查看帮助help column即可
alter session set NLS_DATE_FORMAT='yyyy/mm/dd:hh24:mi:ss';
重新设定为我们想要的格式。
select sysdate from dual;
SYSDATE
-------------------
2007/05/01:16:32:54
查看系统时间,数据库本身没有时间,它有scn号,和我们的时间不同。
alter session set NLS_DATE_FORMAT='DD-MON-RR';
设定为默认的显示格式
select sysdate from dual;
再次查看,我们发现日期的显示随着客户端的格式变化而变化。
日期的内部存储都是以yyyymmddhh24miss存在数据库中

二。select round(sysdate) days from dual;     ---------2013-01-29

取两个日期的月间隔

select months_between(sysdate,to_date('2012-02-20','yyyy-MM-dd')) day from dual  ---------11.3030865442055

select  add_months(sysdate,6) day from dual;-----------------------2013-07-29 9:28:25

当前的日期算起,下一个星期五是哪一天,这句话你可能运行失败,因为日期和客户端的字符集设置有
关系,如果你是英文的客户端,就的用Friday来表达,日期是格式和字符集敏感的。如果你是中文的客
户端,就的用‘星期五’来表达。

select next_day(sysdate,'friday‘) day from dual;

该日期的月底是哪一天。

select last_day(sysdate) from dual;

三。。

数据类型的显式转换
To_char,to_date,to_number
日期转化为字符串,请说明字符串的格式。

select ename,to_char(hiredate,'yyyy/mm/dd') from emp;
ENAME TO_CHAR(HIREDATE,'YYYY/MM/DD')
-------------------- ------------------------------
SMITH 1980/12/17

FM消除前置的零和空格。
select ename,to_char(hiredate,'fmyyyy/mm/dd') from emp;
ENAME TO_CHAR(HIREDATE,'FMYYYY/MM/DD
-------------------- ------------------------------
SMITH 1980/12/17

其他格式:year,month,mon,day,dy,am,ddsp,ddspth
格式内加入字符串请双引。
select to_char(hiredate,'fmyyyy "年" mm "月"') from emp;

 

 

 

抱歉!评论已关闭.