db2日期函数和oracle的区别

来源:互联网 发布:免费刷永久qq会员软件 编辑:程序博客网 时间:2024/04/29 00:47

在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




原文:http://blog.csdn.net/dlodj/article/details/7318761

 

原创粉丝点击