SQL 计算两个日期之间的天数

您所在的位置:网站首页 sqlserver日期差 SQL 计算两个日期之间的天数

SQL 计算两个日期之间的天数

#SQL 计算两个日期之间的天数| 来源: 网络整理| 查看: 265

SQL 计算两个日期之间的天数,找出两个日期之间相差多少天。例如,希望知道员工 ALLEN 和 WARD 的 HIREDATE 相差多少天。

SQL 计算两个日期之间的天数 问题描述

找出两个日期之间相差多少天。例如,希望知道员工 ALLEN 和 WARD 的 HIREDATE 相差多少天。

SQL 计算两个日期之间的天数 解决方案

DB2 使用内嵌视图找出 WARD 和 ALLEN 的 HIREDATE。然后,使用 DAYS 函数从一个 HIREDATE 里减去另一个。

1 select days(ward_hd) - days(allen_hd) 2 from ( 3 select hiredate as ward_hd 4 from emp 5 where ename = 'WARD' 6 ) x, 7 ( 8 select hiredate as allen_hd 9 from emp 10 where ename = 'ALLEN' 11 ) y

Oracle 和 PostgreSQL 使用内嵌视图找出 WARD 和 ALLEN 的 HIREDATE,然后相减。

1 select ward_hd - allen_hd 2 from ( 3 select hiredate as ward_hd 4 from emp 5 where ename = 'WARD' 6 ) x, 7 ( 8 select hiredate as allen_hd 9 from emp 10 where ename = 'ALLEN' 11 ) y

MySQL 和 SQL Server 使用 DATEDIFF 函数找出两个日期之间相差多少天。MySQL 的 DATEDIFF 函数只需要两个参数(两个将要相减的日期值),并且相对较早的日期值应该作为第一个参数以避免出现负数(SQL Server 正好相反)。SQL Server 的 DATEDIFF 函数可以返回指定的时间单位(本例中我们希望以天为单位)。下面给出了 SQL Server 的解决方案。

1 select datediff(day,allen_hd,ward_hd) 2 from ( 3 select hiredate as ward_hd 4 from emp 5 where ename = 'WARD' 6 ) x, 7 ( 8 select hiredate as allen_hd 9 from emp 10 where ename = 'ALLEN' 11 ) y

对于 MySQL 而言,只需去掉 DATEDIFF 函数的第一个参数,并翻转 ALLEN_HD 和 WARD_HD 的顺序即可。

SQL 计算两个日期之间的天数 扩展知识

上述全部解决方案中,内嵌视图 X 和 Y 被用于分别获取 WARD 和 ALLEN 的 HIREDATE。例如:

select ward_hd, allen_hd from ( select hiredate as ward_hd from emp where ename = 'WARD' ) y, ( select hiredate as allen_hd from emp where ename = 'ALLEN' ) x   WARD_HD ALLEN_HD ----------- --------- 22-FEB-1981 20-FEB-1981

因为 X 和 Y 之间没有任何连接条件,这里会产生笛卡儿积。然后,由于本例中的 X 和 Y 都只有一条数据,因而即使没有连接条件也不会有问题,结果集最终只会有一行(很明显,因为 1×1=1)。为了计算两个日期之间相差多少天,只要使用适当的方法用一个日期减去另一个日期即可。



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3