0

请考虑以下查询。我已经意识到使用fans.checkout-fans.checkin来计算两个日期之间的差异(以天为单位)并不是一个好主意。我怎样才能重写它以便我可以使用它DateDiff()?我似乎不能简单地fans.checkout-fans.checkin用这个功能代替。

select x.name
from (
    select fans.name,
    dense_rank() over (order by fans.checkout-fans.checkin desc) as rnk
    from fans 
    where fans.checkout-fans.checkin is not null
    ) x
where x.rnk = 1
4

2 回答 2

7

为什么您认为将两个日期相减以获得它们之间的天数不是一个好主意?这当然是在 Oracle 中进行这种日期算术的标准方法。

DateDiff不是 Oracle 中存在的函数。我知道它存在于 SQL Server 中。当然,您可以编写自己的函数并调用它

CREATE OR REPLACE FUNCTION dateDiff( p_dt1 IN DATE,
                                     p_dt2 IN DATE )
  RETURN NUMBER
IS
BEGIN
  RETURN p_dt1 - p_dt2;
END;

但是,您从这样做而不是简单地继续减去两个日期中获得什么好处并不明显。

于 2013-05-11T04:03:56.307 回答
0

试试这个:

    NUMTODSINTERVAL(SYSDATE - @OLD_DT  , 'DAY')

    OR

    TRUNC (SYSDATE) - @OLD_DT 
于 2014-12-19T02:43:40.570 回答