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

OracleのTRUNC(date)関数

    Oracle Databaseでは、TRUNC(date) 関数は、指定された形式モデルで提供された単位に切り捨てられた日の時間部分を含む指定された日付値を返します。

    OracleにはTRUNC(number)もあります 数値に使用される構文。この記事は、TRUNC(date)に関するものです。 日付に使用される構文。

    構文

    構文は次のようになります:

     TRUNC(date [, fmt ]) 

    date は切り捨てる日付であり、fmt 値を切り捨てる単位を指定するオプションのフォーマットモデルです。フォーマットモデルは、TRUNC(date)でサポートされているフォーマットモデルのいずれかです。 およびROUND(date) 機能。

    この関数は、グレゴリオ暦の規則に従って動作します(NLS_CALENDARの値には影響されません)。 パラメータ)。

    次に例を示します:

     SELECT TRUNC(DATE '2035-08-22', 'MONTH')
    FROM DUAL; 

    結果:

     01-AUG-35 

    さらにいくつかあります:

     SELECT 
        TRUNC(DATE '2035-08-22', 'D') AS "D",
        TRUNC(DATE '2035-08-22', 'DD') AS "DD",
        TRUNC(DATE '2035-08-22', 'MONTH') AS "Month",
        TRUNC(DATE '2035-08-22', 'YEAR') AS "Year",
        TRUNC(DATE '2035-08-22', 'CC') AS "CC"
    FROM DUAL; 

    結果:

     D DD Month Year CC ____________ ____________ ____________ ____________ ____________ 19-AUG-35 22-AUG-35 01-AUG-35 01-JAN- 

    結果は、現在のセッションの日付形式に従って形式化されます。詳細については、現在のセッションの日付形式を確認する方法と現在のセッションの日付形式を変更する方法を参照してください。

    デフォルトの日付単位

    デフォルトの日付単位はDDです :

     SELECT 
        TRUNC(DATE '2035-08-22') AS "Default",
        TRUNC(DATE '2035-08-22', 'DD') AS "DD"
    FROM DUAL; 

    結果:

    デフォルトDD________________________ 22-AUG-35 22-AUG-35 

    ROUND()との比較

    TRUNC(date) 関数はROUND(date)とは異なります 働き。 ROUND() 関数は、日付を切り上げる場合と切り下げる場合があります。 TRUNC() 一方、関数は、丸めることなく、日付を指定された単位に切り捨てるだけです。

    この違いを示すための比較は次のとおりです。

     SELECT 
        TRUNC(DATE '2030-12-31', 'MONTH') AS "Trunc",
        ROUND(DATE '2030-12-31', 'MONTH') AS "Round"
    FROM DUAL; 

    結果:

    トランクラウンド________________________01-DEC-30 01-JAN-31 

    ヌル値

    いずれかの引数がnullの場合 、結果はnullです :

     SET NULL 'null';
    SELECT 
        TRUNC(null, 'D'),
        TRUNC(date'2020-12-30', null)
    FROM DUAL; 

    結果:

     TRUNC(NULL、'D')TRUNC(DATE'2020-12-30'、NULL)__________________ _______________________________ null null 

    デフォルトでは、SQLclおよびSQL * Plusは、SQL SELECTの結果としてnull値が発生するたびに空白を返します。 声明。

    ただし、SET NULLは使用できます 返される別の文字列を指定します。ここでは、文字列nullを指定しました 返却する必要があります。

    無効な引数カウント

    TRUNC()の呼び出し 引数がないとエラーになります:

     SELECT TRUNC()
    FROM DUAL; 

    結果:

    コマンドラインの行:1から始まるエラー-SELECT TRUNC()FROM DUALコマンドラインのエラー:1列:8エラーレポート-SQLエラー:ORA-00938:function00938の引数が不足しています。 00000-「関数の引数が足りません」*原因:*アクション:

    また、引数が多すぎると、エラーが発生します:

     SELECT TRUNC(1, 2, 3)
    FROM DUAL; 

    結果:

    コマンドラインの1行目から始まるエラー-SELECTTRUNC(1、2、3)FROM DUALコマンドラインのエラー:1列:20エラーレポート-SQLエラー:ORA-00939:function00939の引数が多すぎます。 00000-「関数の引数が多すぎます」*原因:*アクション:

    1. ルーム-外部SQLiteと内部DBの使用

    2. Mysqlの行サイズの変更制限が大きすぎます

    3. MySQLを使用した基本的なSQLクエリについて学ぶ

    4. Postgresがサブクエリをインライン化するのを防ぐにはどうすればよいですか?