sql >> データベース >  >> RDS >> Oracle

Oracle 11gのTIMESTAMPDIFF?

    その関数はOracleRDMBSには存在しません。それは明らかにOracleLite(私が遭遇したことのない)で行われ、MySQLのような他のデータベースにあると思います。

    日時と区間演算> そこへの道の一部になります。あるタイムスタンプを別のタイムスタンプから引くことができます。または、ある日付から別の日付、または2つの日付の組み合わせですが、1つのデータ型に固執する方が簡単です。どちらを使用するかに応じて、間隔または日数を表す数値が表示されます。

    SQL> SELECT CURRENT_TIMESTAMP - TIMESTAMP '1998-12-09 00:00:00' FROM DUAL;
    
    CURRENT_TIMESTAMP-TIMESTAMP'1998-12-0900:00:00'
    ---------------------------------------------------------------------------
    +000006169 16:16:21.287166000
    
    SQL> SELECT CURRENT_DATE - DATE '1998-12-09' FROM DUAL;
    
    CURRENT_DATE-DATE'1998-12-09'
    -----------------------------
                       6169.67775
    

    丸一日の日数だけが必要な場合は、<を使用できます。 code> extract() 必要な要素だけを取得する間隔、または trunc() 小数部分を削除する数について:

    SQL> SELECT EXTRACT(DAY FROM CURRENT_TIMESTAMP - TIMESTAMP '1998-12-09 00:00:00') FROM DUAL;
    
    EXTRACT(DAYFROMCURRENT_TIMESTAMP-TIMESTAMP'1998-12-0900:00:00')
    ---------------------------------------------------------------
                                                               6169
    
    SQL> SELECT TRUNC(CURRENT_DATE - DATE '1998-12-09') FROM DUAL;
    
    TRUNC(CURRENT_DATE-DATE'1998-12-09')
    ------------------------------------
                                    6169
    

    trunc()もできます。 必要に応じて、比較前の現在の日付。つまり、両方を深夜に比較します。つまり、削除する小数の日の部分はありません。

    SQL> SELECT TRUNC(CURRENT_DATE) - DATE '1998-12-09' FROM DUAL;
    
    TRUNC(CURRENT_DATE)-DATE'1998-12-09'
    ------------------------------------
                                    6169
    

    固定日付にはANSI日付リテラルを使用しましたが、既存の日付またはタイムスタンプの変数または列を使用できます。またはto_date() またはto_timestamp() 別の形式の文字列がある場合。

    extract()を使用することもできます 間隔のコンポーネントを結合値に変換するには、ここに示すように ;また、 current_dateの違いを認識していることを確認してください およびsysdate 、および同等のタイムスタンプ



    1. OracleおよびSQLServerの主キー

    2. 点群を初期化できません-ORA-13249:dmlトリガーの作成中にエラーが発生しました

    3. Enterprise Manager AppforGrafanaを使用してOEMをGrafanaに接続します

    4. MySQLとMariaDBのデータベースプロキシの選択