Oracle 日期运算 集合

--1、oracle 日期加减


select sysdate,add_months(sysdate,12) from dual;  --日期加一年
/*SYSDATE                   ADD_MONTHS(SYSDATE,12)  
------------------------- -------------------------
25-6月 -09                25-6月 -10              
*/
select sysdate,add_months(sysdate,1) from dual;   --日期加一月
/*
SYSDATE                   ADD_MONTHS(SYSDATE,1)   
------------------------- -------------------------
25-6月 -09                25-7月 -09              
*/
select sysdate,sysdate+1 from dual;               --日期加一天
/*
SYSDATE                   SYSDATE+1               
------------------------- -------------------------
25-6月 -09                26-6月 -09              
*/
select to_char(sysdate,'YYYY-MM-dd hh24:mi:ss') oldtime,
to_char(sysdate+1/24,'YYYY-MM-dd hh24:mi:ss') newtime
from dual;                                        --时间加一个小时
/*
OLDTIME             NEWTIME           
------------------- -------------------
2009-06-25 16:04:23 2009-06-25 17:04:23
*/
select to_char(sysdate,'YYYY-MM-dd hh24:mi:ss') oldtime,
to_char(sysdate+1/24/60,'YYYY-MM-dd hh24:mi:ss') newtime
from dual;                                        --时间加一分钟
/*
OLDTIME             NEWTIME           
------------------- -------------------
2009-06-25 16:06:13 2009-06-25 16:07:13
*/
select to_char(sysdate,'YYYY-MM-dd hh24:mi:ss') oldtime,
to_char(sysdate+1/24/60/60,'YYYY-MM-dd hh24:mi:ss') newtime
from dual;                                        --时间加一秒钟
/*
OLDTIME             NEWTIME           
------------------- -------------------
2009-06-25 16:07:28 2009-06-25 16:07:29
*/
--减法就就把响应的+换成减-就行了。
--2、连个日期的差
--两个日期差的天数
select to_date('2009-06-26','yyyy-mm-dd')-to_date('2009-01-01','yyyy-mm-dd') ts from dual;
/*
TS                   
----------------------
176
*/
--两个日期差的月数
select months_between(to_date('2009-07-01','yyyy-mm-dd'),to_date('2009-01-01','yyyy-mm-dd')) ys from dual;
/*
YS                   
----------------------
6
*/
--两个日期差的年数,使用相差的月数除以12
select (months_between(to_date('2009-07-01','yyyy-mm-dd'),to_date('2009-01-01','yyyy-mm-dd')))/12 ys from dual;
/*
YS                   
----------------------
0.5
*/
--2、其它
--求每个月最后一天,上篇文章介绍了一个方法:
select trunc(add_months(sysdate,1),'mm')-1 from dual;
--30-6月 -09
--其实oracle 提供了相应的函数last_day
select last_day(sysdate) from dual;
/*
LAST_DAY(SYSDATE)       
-------------------------
30-6月 -09   
*/
select last_day(to_date('2008-03-01','yyyy-mm-dd')) from dual;
/*
LAST_DAY(TO_DATE('2008-03-01','YYYY-MM-DD'))
-------------------------
31-3月 -08    
*/
--求每个月的第一天,上篇文章介绍了一个方法:
select trunc(sysdate,'mm') from dual;
--01-6月 -09
--我们也使用LAST_DAY和函数实现:求上一个月的最后一天然后再在加一天,就是当月的第一天
select last_day(add_months(sysdate,-1))+1 fd from dual;
/*
FD                      
-------------------------
01-6月 -09     
*/
--next_day用法:使用中文标示工作日
select next_day(sysdate,'星期五') "下周五" from dual;
/*
下周五                     
-------------------------
03-7月 -09 
*/
--使用数字标示工作日:1表示的是周日,2表示的是周一,3表示的是周二,依此类推。
select next_day(sysdate,6) "下周五" from dual;
/*
下周五                     
-------------------------
03-7月 -09 
*/

类别: 数据库  查看评论
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值