db2日期函数和oracle的区别

在db2中,可以用字符串来表示日期时间类型,数据库系统会自动在内部把他们转换为日期时间类型;

但是在oracle中必须手工显示的使用to_date函数把字符串表示的日期时间进行转换才可以。

比如:

db2中:  select days('2011-01-01')-days('2011-01-02') from sysibm.sysdummy1;    ---   -1

oracle中:select to_char(to_date('2011-01-01','yyyy-mm-dd')-1,'yyyy-mm-dd') from dual;  --- 2010-12-31

 

oracle中的日期函数如下:

 

Oracle中可以直接使用加号“+”来进行日期的加法运算,其计算单位为“天”,比如date+3
就表示在日期date的基础上增加三天;同理使用减号“-”则可以用来计算日期前的特定时间
段的时间,比如date-3就表示在日期date的三天前的日期。

例子如下:

select to_char(to_date('2011-01-04','yyyy-mm-dd')-3,'yyyy-mm-dd'),to_char(to_date('2011-01-04','yyyy-mm-dd')+3,'yyyy-mm-dd') from dual;

---------------------------------------

2011-01-01     2011-01-07

 

同时如果在oracle中建立了一个表,其中某一列比如today定义为date型了,那么在想表中的today字段插入数据的时候,就只能使用to_date(日期字符串,'yyyy-mm-dd')来向

字段中插入数据,否则oracle会报错。而对于db2来讲,可以直接插入('2011-01-01')之类的日期值,而不用做转换。

 

oracle可以使用换算的方式来进行以周、小时、分钟等为单位的日期加减运算,比如下面的
SQL语句用于计算当前2小时10分钟后以及3周后的日期:

select sysdate from dual;

         sysdate

---------------------------   

2012/3/4 22:06:03

select  sysdate+2/24+10/(60*24) date1,sysdate+3*7  date2 from dual;

date1                                  date2

-----------------------------------------------------------------

2012/3/5 0:16:03          2012/3/25 22:06:03

使用加减运算我们可以很容易的实现以周、天、小时、分钟、秒等为单位的日期的增减运
算,不过由于每个月的天数是不同的,也就是在天和月之间不存在固定的换算率,所以无法使用
加减运算实现以月为单位的计算,为此Oracle中提供了ADD_MONTHS()函数用于以月为单位的
日期增减运算,ADD_MONTHS()函数的参数格式如下:
ADD_MONTHS(date,number)

其中参数date为待计算的日期,参数number为要增加的月份数,如果number为负数则表
示进行日期的减运算。

举例如下:

select sysdate,add_months(sysdate,3) sysdate3,add_months(sysdate,-2) sysdate2 from dual;

sysdate                              sysdate3                              sysdate2

------------------------------------------------------------------------------------------------------

2012/3/4 22:09:22      2012/6/4 22:09:22          2012/1/4 22:09:22

如下面的SQL语句用于计算当前日期两个月零10天后以及3个月零10个小时前的日期
时间:

select sysdate,add_months(sysdate,2)+10 sysdate1,add_months(sysdate,-3)-10/24 sysdate2 from dual;

sysdate                              sysdate1                             sysdate2

--------------------------------------------------------------------------------------------

2012/3/4 22:37:07      2012/5/14 22:37:07       2011/12/4 12:37:07

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值