oracle数据库日期间隔计算和db2数据库日期间隔计算

来源:互联网 发布:java 登录密码md5加密 编辑:程序博客网 时间:2024/06/03 17:33
oracle数据库和db2数据库日期间隔计算:
例如:表:tablename有字段startdate,enddate 该字段全部为INTEGER 类型
1、oracle数据库
select 
       (to_date(to_char(a.enddate ), 'yyyy-mm-dd') -
       to_date(to_char(a.startdate), 'yyyy-mm-dd')) deadline
  from tablename a

2、db2数据库
select 
       (days(to_date(trim(char(a.enddate )), 'yyyy-mm-dd')) -
       days(to_date(trim(char(a.startdate)), 'yyyy-mm-dd'))) deadline
  from tablename  a 

如果db2数据库版本太低该语句会报错,可使用如下语句:
select 
       days(date(substr(char(a.enddate ), 1, 4) || '-' ||
                 substr(char(a.enddate ), 5, 2) || '-' ||
                 substr(char(a.enddate ), 7))) -
       days(date(substr(char(a.startdate), 1, 4) || '-' ||
                 substr(char(a.startdate), 5, 2) || '-' ||
                 substr(char(a.startdate), 7)))
  from tablename  a

如果字段不是8位,查询也会报错,则可使用如下语句:
select to_date(to_char(case
                          when a.enddate = 0 then
                           10000101
                          else
                           a.enddate 
                        end),
                'yyyy-mm-dd') - to_date(to_char(case
         when a.startdate= 0 then
          10000101
         else
          a.startdate
       end)
 from tablename  a
原创粉丝点击