0

次のクエリを検討してください。fans.checkout-fans.checkinを使用して 2 つの日付 (日数) の差を計算するのはあまり良い考えではないことに気付きました。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

2 つの日付の間の日数を求めるために 2 つの日付を減算するのはよくないと思うのはなぜですか? これは確かに、Oracle でその種の日付計算を行う標準的な方法です。

DateDiffOracle に存在する関数ではありません。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;

ただし、単純に 2 つの日付を減算し続けるのではなく、これを行うことでどのようなメリットが得られるかは明らかではありません。

于 2013-05-11T04:03:56.307 に答える
0

これを試してください:

    NUMTODSINTERVAL(SYSDATE - @OLD_DT  , 'DAY')

    OR

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