时间差,SQL 计算当前记录和下一条记录之间的日期差"/>
oracle下一条减上一条时间差,SQL 计算当前记录和下一条记录之间的日期差
SQL 计算当前记录和下一条记录之间的日期差,计算两个日期之间相差多少天(特别是当两者分别存储于不同的行的时候)。例如,对于 DEPTNO 等于 10 的部门的每一个员工,你希望计算出他们的入职日期之间相差多少天。
SQL 计算当前记录和下一条记录之间的日期差 问题描述
计算两个日期之间相差多少天(特别是当两者分别存储于不同的行的时候)。例如,对于 DEPTNO 等于 10 的部门的每一个员工,你希望计算出他们的入职日期之间相差多少天。
SQL 计算当前记录和下一条记录之间的日期差 解决方案
要解决本问题有一个诀窍是,在早于当前入职时间的所有记录里找出 HIREDATE 的最小值。如此一来,剩下的工作就是利用 8.2 节里提到的技巧来计算出两个日期之间相差多少天。
DB2
使用标量子查询找出相对于当前 HIREDATE 的下一个 HIREDATE。然后,调用 DAYS 函数计算两个日期之间相差多少天。
MySQL 和 SQL Server
使用标量子查询找出相对于当前 HIREDATE 的下一个 HIREDATE。然后,调用 DATEDIFF 函数计算两个日期之间相差多少天。下面的代码里以 SQL Server 版本的 DATEDIFF 函数为例。
对于 MySQL 版本的 DATEDIFF 函数,我们需要省略第一个参数 day,并把剩下的两个参数的顺序颠倒过来。
Oracle
对于 Oracle 8i 及后续版本,使用窗口函数 LEAD OVER 访问相对于当前 HIREDATE 的下一个 HIREDATE,然后执行减法运算。
对于 Oracle 8i 及更早的版本,则需要采用下面的 PostgreSQL 解决方案。
PostgreSQL
使用标量子查询找
更多推荐
oracle下一条减上一条时间差,SQL 计算当前记录和下一条记录之间的日期差
发布评论