oracle中日期运算

--获取系统的时间
select sysdate from dual;

--ceil()向上1取整
--floor()向下取整

--得到相差的天数
select (to_date('2012-10-1','YYYY-MM-DD')-to_date('2011-9-11','YYYY-MM-DD')) from dual;
--得到相差的年份===使用相差的月数除以12
select floor(months_between(sysdate,to_date('2010-02-02','yyyy-mm-dd'))/12) from dual;
--得到相差的月=====第一个时间大才能为正
select floor(months_between(sysdate,to_date('2011-9-01','YYYY-MM-DD'))) from dual;


--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 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、付费专栏及课程。

余额充值