To_Date函数⽤法(转)
原⽂地址:
spl> select * from emp
where dates
between
to_date('2007-06-12 10:00:00', 'yyyy-mm-dd hh24:mi:ss')
and
to_date('2007-06-12 10:00:00', 'yyyy-mm-dd hh24:mi:ss')
当省略HH、MI和SS对应的输⼊参数时,Oracle使⽤0作为DEFAULT值。如果输⼊的⽇期数据忽略时间部分,Oracle会将时、分、秒部分都置为0,也就是说会取整到⽇。
同样,忽略了DD参数,Oracle会采⽤1作为⽇的默认值,也就是说会取整到⽉。
但是,不要被这种“惯性”所迷惑,如果忽略MM参数,Oracle并不会取整到年,取整到当前⽉。
注意:
1.在使⽤Oracle的to_date函数来做⽇期转换时,可能会直觉地采⽤“yyyy-MM-dd HH:mm:ss”的格式作为格式进⾏转换,但是在Oracle中会引起错误:“ORA 01810 格式代码出现两次”。如:select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mm:ss') from dual;
原因是SQL中不区分⼤⼩写,MM和mm被认为是相同的格式代码,所以Oracle的SQL采⽤了mi代替分钟。select to_date('2005-01-01 13:14:20','yyyy-MM-dd
HH24:mi:ss') from dual;
2.另要以24⼩时的形式显⽰出来要⽤HH24
select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual;//mi是分钟
select to_char(sysdate,'yyyy-MM-dd HH24:mm:ss') from dual;//mm会显⽰⽉份
Oracle中⼏个关于⽇期⽅⾯的SQL实例
SQL>  select  to_char(sysdate,'YYYYMMDD  W  HH24:MI:SS')  from  dual;
TO_CHAR(SYSDATE,'YY
-------------------
20030327  4  18:16:09
SQL>  select  to_char(sysdate,'W')  from  dual;
T
-
4oracle中trunc函数用法
№2:取得当前⽇期是⼀个星期中的第⼏天,注意星期⽇是第⼀天
SQL>  select  sysdate,to_char(sysdate,'D')  from  dual;
SYSDATE      T
---------  -
27-MAR-03  5
类似:
select  to_char(sysdate,'yyyy')  from  dual;  --年
select  to_char(sysdate,'Q'  from  dual;          --季
select  to_char(sysdate,'mm')  from  dual;      --⽉
select  to_char(sysdate,'dd')  from  dual;      --⽇
ddd  年中的第⼏天
WW  年中的第⼏个星期
W  该⽉中第⼏个星期
D  周中的星期⼏
hh  ⼩时(12)
hh24  ⼩时(24)
Mi  分
ss  秒
№3:取当前⽇期是星期⼏中⽂ 显⽰ :
SQL>  select  to_char(sysdate,'day')  from  dual;
TO_CHAR(SYSDATE,'DAY')
----------------------
星期四
№4:如果⼀个表在⼀个date类型的字段上⾯建⽴了索引,如何使⽤
alter session set NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'
№5: 得到当前的⽇期
select sysdate from dual;
№6: 得到当天凌晨0点0分0秒的⽇期
select trunc(sysdate) from dual;
-- 得到这天的最后⼀秒
select trunc(sysdate) + 0.99999 from dual;
-- 得到⼩时的具体数值
select trunc(sysdate) + 1/24 from dual;
select trunc(sysdate) + 7/24 from dual;
№7:得到明天凌晨0点0分0秒的⽇期
select trunc(sysdate+1) from dual;
select trunc(sysdate)+1 from dual;
№8: 本⽉⼀⽇的⽇期
select trunc(sysdate,'mm') from dual;
№9:得到下⽉⼀⽇的⽇期
select trunc(add_months(sysdate,1),'mm') from dual;
№10:返回当前⽉的最后⼀天?
select last_day(sysdate)  from dual;
select last_day(trunc(sysdate))  from dual;
select trunc(last_day(sysdate))  from dual;
select trunc(add_months(sysdate,1),'mm') - 1 from dual;
№11: 得到⼀年的每⼀天
select trunc(sysdate,'yyyy')+ rn -1 date0
from
(select rownum rn from all_objects
where rownum<366);
№12:今天是今年的第N天
SELECT TO_CHAR(SYSDATE,'DDD') FROM DUAL;
№13:如何在给现有的⽇期加上2年
select add_months(sysdate,24) from dual;
№14:判断某⼀⽇⼦所在年分是否为润年
select decode(to_char(last_day(trunc(sysdate,'y')+31),'dd'),'29','闰年','平年') from dual;
№15:判断两年后是否为润年
select decode(to_char(last_day(trunc(add_months(sysdate,24),'y')+31),'dd'),'29','闰年','平年') from dual;№16:得到⽇期的季度
select ceil(to_number(to_char(sysdate,'mm'))/3) from dual;
select to_char(sysdate, 'Q') from dual;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。