web-dev-qa-db-ja.com

OracleのDATEDIFF関数

Oracleを使用する必要がありますが、DATEDIFF関数はOracle DBで機能しません。

Oracleで次のコードを記述する方法INTERVALまたはTRUNCを使用した例をいくつか見ました。

SELECT DATEDIFF ('2000-01-01','2000-01-02') AS DateDiff;
25
user3601310

Oracleでは、2つの日付を単純に減算して、の差を取得できます。また、SQL ServerやMySQLとは異なり、Oracleではselect句なしでfromステートメントを実行できないことに注意してください。これを回避する1つの方法は、組み込みのダミーテーブルdualを使用することです。

SELECT TO_DATE('2000-01-02', 'YYYY-MM-DD') -  
       TO_DATE('2000-01-01', 'YYYY-MM-DD') AS DateDiff
FROM   dual
33
Mureinik

2つの日付を減算するだけです。

select date '2000-01-02' - date '2000-01-01' as dateDiff
from dual;

結果は日数の差になります。

詳細はマニュアルに記載されています。
https://docs.Oracle.com/cd/E11882_01/server.112/e41084/sql_elements001.htm#i48042

2つの日付を単純に減算できます。 to_dateを使用して、最初にキャストする必要があります。

select to_date('2000-01-01', 'yyyy-MM-dd')
       - to_date('2000-01-02', 'yyyy-MM-dd')
       datediff
from   dual
;

結果は日数で、これら2つの日付の差は-1です(必要に応じて2つの日付を入れ替えることができます)。数時間で取得したい場合は、結果に24を掛けます。

3
Patrick Hofman