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-「関数の引数が多すぎます」*原因:*アクション: