sysdate⽤法⼤全
使⽤RR格式
如果⽇期中的年份采⽤的格式为RR,并且只提供了最后2位年份,那么年份中的前两位数字就由两部分共同确定:提供年份的两位数字(指定年),数据库服务器上当前⽇期中年份的后2位数字(当年)。确定指定年世纪的规则如下:
● 规则1如果指定年在00~49之间,并且当前年份在00~49之间,那么指定年的世纪就与当前年份的世纪相同。因此,指定年的前两位数字就等于当前年份的前两位数字。例如,如果指定年为15,⽽当前年份为2007,那么指定年就是2015。
● 规则2如果指定年在50~99之间,并且当前年份在00~49之间,那么指定年的世纪就等于当前年份的世纪减去1。因此,指定年的前两位数字等于当前年份的前两位数字减去1。例如,如果指定年为75,⽽当前年份为2007,那么指定年就是1975。
● 规则3如果指定年在00~49之间,并且当前年份在50~99之间,那么指定年的世纪就等于当前年份的世纪加上1。因此,指定年的前两位数字等于当前年份的前两位数字加上1。例如,如果指定年为15,⽽当前年份为2075,那么指定年就是2115。
● 规则4如果指定年在50~99之间,并且当前年份在50~99之间,那么指定年的世纪就与当前年份的世纪相同。因此,指定年的前两位数字就等于当前年份的前两位数字。例如,如果指定年为55,⽽当前年份为2075,那么指定年就是2055。
表5-5对这些结果进⾏了总结。
表5-5 2位年份的解释
指定年的2位数字
00~4950~99
当前年份的后两位数字00~49规则1:指定年的前两位数字就等于当前年份的前两位数字规则2:指定年的前两位数字就等于当前年份的前两位数字减去1 50~99
规则3:指定年的前两位数字就等于当前年份的前两位数字加上
1
规则4:指定年的前两位数字就等于当前年份的前两位数字
注意:
如果⽇期中的年份使⽤RRRR格式,但是只提供了2位的年份,那么使⽤RR格式来解释年份。下⾯看⼀个查询,它在解释15和75时使⽤了RR格式。下⾯这个查询假设当前年份为2007年: SELECT
TO_CHAR(TO_DATE('04-JUL-15', 'DD-MON-RR'), 'DD-MON-YYYY'),
TO_CHAR(TO_DATE('04-JUL-75', 'DD-MON-RR'), 'DD-MON-YYYY')
FROM dual;
TO_CHAR(TO_ TO_CHAR(TO_
----------- -----------
04-JUL-2015 04-JUL-1975
正如规则1和规则2解释的⼀样,15和75分别被解释为2015年和1975年。
下⾯这个查询假设当前年份为2075年:
SELECT
TO_CHAR(TO_DATE('04-JUL-15', 'DD-MON-RR'), 'DD-MON-YYYY'),
TO_CHAR(TO_DATE('04-JUL-55', 'DD-MON-RR'), 'DD-MON-YYYY')
FROM dual;
TO_CHAR(TO_ TO_CHAR(TO_
----------- -----------
oracle中trunc函数用法04-JUL-2115 04-JUL-2055
正如规则3和规则4解释的⼀样,15和75分别被解释为2115年和2055年。
加法
select sysdate,add_months(sysdate,12) from dual; --加1年
select sysdate,add_months(sysdate,1) from dual; --加1⽉
select sysdate,to_char(sysdate+7,'yyyy-mm-dd HH24:MI:SS') from dual; --加1星期
select sysdate,to_char(sysdate+1,'yyyy-mm-dd HH24:MI:SS') from dual; --加1天
select sysdate,to_char(sysdate+1/24,'yyyy-mm-dd HH24:MI:SS') from dual; --加1⼩时 select sysdate,to_char(sysdate+1/24/60,'yyyy-mm-dd HH24:MI:SS') from dual; --加1分钟 select sysdate,to_char(sysdate+1/24/60/60,'yyyy-mm-dd HH24:MI:SS') from dual; --加1秒
减法
select sysdate,add_months(sysdate,-12) from dual; --减1年
select sysdate,add_months(sysdate,-1) from dual; --减1⽉
select sysdate,to_char(sysdate-7,'yyyy-mm-dd HH24:MI:SS') from dual; --减1星期
select sysdate,to_char(sysdate-1,'yyyy-mm-dd HH24:MI:SS') from dual; --减1天
select sysdate,to_char(sysdate-1/24,'yyyy-mm-dd HH24:MI:SS') from dual; --减1⼩时
select sysdate,to_char(sysdate-1/24/60,'yyyy-mm-dd HH24:MI:SS') from dual; --减1分钟 select sysdate,to_char(sysdate-1/24/60/60,'yyyy-mm-dd HH24:MI:SS') from dual; --减1秒 ORACLE时间函数(SYSDATE)简析
1:取得当前⽇期是本⽉的第⼏周
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
-
4
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小时内删除。
发表评论