sql年月日加减法,计算两个日期之间的天数

1、年月日加减法(时间字段为  hiredate,表名为 emp)

DB2

select

         hiredate  -5   day  as  hd_sub_5day,

         hiredate  +5   day  as hd_add_5day,

         hiredate  -5   month  as  hd_sub_5month,

         hiredate  +5   month  as  hd_add_5month,

         hiredate  -5   year  as  hd_sub_5year,

         hiredate  +5   year  as  hd_add_5year
from  emp

Oracle

select

         hiredate  -5  as  hd_sub_5day,

         hiredate  5  as hd_add_5day,

         add_months(hiredate,-5) as  hd_sub_5month,

         add_months(hiredate,5)  as  hd_add_5month,

         add_months(hiredate,-5*12)  as  hd_sub_5year,

         add_months(hiredate,5*12) as  hd_add_5year
from  emp

Mysql

select

         hiredate  -  interval  5 day  as  hd_sub_5day,

         hiredate  +  interval  5 day  as hd_add_5day,

         hiredate  -  interval  5 month  as  hd_sub_5month,

         hiredate  +  interval  5 month  as  hd_add_5month,

         hiredate  -  interval  5 year  as  hd_sub_5year,

         hiredate  +  interval  5 year  as  hd_add_5year
from  emp

或者使用date_add函数

select

         date_add(hiredate,interval - 5 day)  as  hd_sub_5day,

         date_add(hiredate,interval  5 day)  as hd_add_5day,

         date_add(hiredate,interval - 5 month)  as  hd_sub_5month,

         date_add(hiredate,interval  5 month)  as  hd_add_5month,

         date_add(hiredate,-interval - 5 year)  as  hd_sub_5year,

         date_add(hiredate,interval  5 year)  as  hd_add_5year
from  emp

SQL Server

select

         date_add(day ,interval - 5 hiredate)  as  hd_sub_5day,

         date_add(day,interval  5 hiredate)  as hd_add_5day,

         date_add(month,interval - 5 hiredate)  as  hd_sub_5month,

         date_add(month,interval  5 hiredate)  as  hd_add_5month,

         date_add(year,-interval - 5 hiredate)  as  hd_sub_5year,

         date_add(year,interval  5 hiredate)  as  hd_add_5year
from  emp

2、计算两个日期之间的天数(时间字段为  hiredate,名称字段为 ename,表名为 emp)

DB2

select
    days(x.ward-hd) - days(y.allen_hd)
from
    (select hiredate as ward_hd
     from  emp
     where  ename = 'WARD'
    ) x,
    (select hiredate as allen_hd
     from  emp
     where  ename = 'ALLEN'
    ) y

Oracle

select
    x.ward-hd - y.allen_hd
from
    (select hiredate as ward_hd
     from  emp
     where  ename = 'WARD'
    ) x,
    (select hiredate as allen_hd
     from  emp
     where  ename = 'ALLEN'
    ) y

Mysql 和 SQL Server

select
    datediff(day,x.ward-hd,y.allen_hd)
from
    (select hiredate as ward_hd
     from  emp
     where  ename = 'WARD'
    ) x,
    (select hiredate as allen_hd
     from  emp
     where  ename = 'ALLEN'
    ) y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值