Oracle:
计算日期之间的天数差
select TO_NUMBER((TO_DATE('2019-01-01 19:51:20','yyyy-mm-dd hh24:mi:ss')- TO_DATE('2019-01-05 21:50:20','yyyy-mm-dd hh24:mi:ss'))*24) from dual;
结果:4.0826388888888888888888888888888888889
会用第一个参数减去第二个参数,会产生正负值,结果参考月份差函数
想要获取小时,分钟,秒及毫秒,在后面乘以对应的比例即可
计算日期之间的月份差
SELECT Months_between(SYSDATE,to_date('2019-12-30','yyyy-MM-dd')) FROM dual
其中 SYSDATE 字段指的是系统当前日期
结果:0.599984318996415770609318996415770609319
Months_between函数会用第一个参数减去第二个参数,会产生正负值
列:
此处用trunc()函数取整数值部分,发现最后值为-12,有正负之分
计算相差年可以在后面除以12
SQLServer:
DATEDIFF() 函数返回两个日期之间的时间。
DATEDIFF(datepart,startdate,enddate)
datepart | 缩写 |
---|---|
年 | yy, yyyy |
季度 | qq, q |
月 | mm, m |
年中的日 | dy, y |
日 | dd, d |
周 | wk, ww |
星期 | dw, w |
小时 | hh |
分钟 | mi, n |
秒 | ss, s |
毫秒 | ms |
微妙 | mcs |
纳秒 | ns |
列:
SELECT DATEDIFF(day,'2008-12-30','2008-12-29') AS DiffDate
结果:-1
MySQL:
时间差函数timestampdiff:
timestampdiff(interval, datetime1,datetime2)
intervar对应参数有:
intervar | 参数 |
---|---|
年 | year |
季度 | quarter |
月 | month |
日 | day |
周 | week |
小时 | hour |
分钟 | minute |
秒 | second |
毫秒 | frac_second |
时间差函数datediff:
SELECT DATEDIFF(day1,day2);
SELECT DATEDIFF('2019-01-13','2018-10-01');
计算的结果为俩个日期相差的天数,第一个参数-第二个参数
结果:104
时间差函数timediff:
SELECT TIMEDIFF(day1,day2);
SELECT TIMEDIFF('2019-09-22 14:51:43','2019-09-20 12:54:43');
也是第一个参数-第二个参数
结果:49:57:00