SQL 10 函数 3 日期时间函数 - 5 计算日期差额

有时候我们需要计算连个日期的差额,比如计算“回款日”和验收日之间所差的天数,或者检索所有“最后一次登陆日期”与当前日期的差额大于100天的用户信息。主流的数据库系统中都提供了对计算日期差额的支持。

1. MySQL

MySQL中使用DATEDIFF()函数用于计算两个日期之间的差额,其参数调用格式如下:

DATEDIFF(date1, date2 )

函数将返回date1与date2之间的天数差额,如果date2在date1之后,则返回正值,否则返回负值。

比如下面的SQL语句用于计算注册日期和出生日期之间的天数差额:

SELECT  FRegDay, FBirthday, DATEDIFF(FRegDay, FBirthday), DATEDIFF(FBirthday, FRegDay) FROM T_Person

 

DATEDIFF()函数只能计算两个日期间的天数擦和,如果要计算两个日期的周差额等就需要进行换算,比如下面的SQL语句用于计算注册日期和出生日期之间的周数差额:

SELECT FRegDay, FBirthday, DATEDIFF(FRegDay, FBirthday)/7 FROM T_Person

 

2.Oracle

在Oracle中,可以在两个日期类型的数据之间使用减号运算符“-”,其计算结果为两个日期之间的天数差,比如只想下面的SQL语句用于计算注册日期FRegDay和出生日期FBirthday之间的时间间隔:

SELECT FRegDay, FBirthday, FRegDay-FBirthday FROM T_Person

 

通过减号运算符“-”计算的两个日期之间的天数差是包含有小鼠部分的。小鼠部分是表示不足一天的部分,比如执行下面的SQL语句用于计算当前时刻和出生日期FBirthday之间的时间间隔:

SELECT SYSDATE, FBirthday, SYSDATE-FBirhday FROM T_Person

 

可以看到天数差的小数部分是非常精确的,所以完全可以精确地表示两个日期时间值的小事、分、秒甚至毫秒部分。如果要计算两个日期时间值之间的小时、分、秒甚至毫秒差的话,只要进行相应的换算就可以了,比如下面的SQL用来计算当前时刻和出生日期FBirthday之间的时间间隔(小时、分以及秒):

SELECT (SYSDATE-FBirthday)*24, (SYSDATE-FBirhday)*24*60, (SYSDATE-FBirthday)*24*60*60 FROM T_Person

 

下面的SQL语句用来计算当前时刻和出生日期FBirthday之间的周间隔:

SELECT SYSDATE, FBirthday, (SYSDATE-FBirthday)/7 FROM T_Person

可以从执行结果看到,计算结果含有非常精确的小数部分,不过如果对这些小数部分没有需求的话,可以使用数值函数进行四舍五入、取最大整数等处理。比如下面的SQL用计算当前时刻和出生日期FBirthday之间的时间间隔(小时、分以及秒),并且对计算结果进行四舍五入:

SELECT ROUND((SYSDATE-FBirthday)*24), ROUND((SYSDATE-FBirthday)*24*60), ROUND((SYSDATE-FBirthday)*24*60*60) FROM T_Person

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值