SQL 计算两个日期之间的天数 |
您所在的位置:网站首页 › sqlserver日期差 › SQL 计算两个日期之间的天数 |
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 ) yOracle 和 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 ) yMySQL 和 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 |