8.9.10 TRUNC
日時データを日時書式で指定した単位で切り捨てます。
数データを切り捨てるスカラ関数TRUNCについては,「8.4.12 TRUNC」を参照してください。
- 〈この項の構成〉
(1) 指定形式
スカラ関数TRUNC::=TRUNC(日時データ,日時書式) 日時データ::=値式 日時書式::=定数
(2) 指定形式の説明
- 日時データ:
-
処理対象の日時データを指定します。
指定規則を次に示します。
-
日時データは,値式の形式で指定します。値式については,「7.21 値式」を参照してください。
-
日時データのデータ型は,DATE型,TIME型,またはTIMESTAMP型のどれかにしてください。
-
日時データには,?パラメタを単独で指定できません。
-
- 日時書式:
-
日時データを切り捨てる単位を指定します。
指定規則を次に示します。
-
日時書式には,文字列定数を指定します。文字列定数については,「6.3 定数」を参照してください。
-
日時書式に指定できる要素を次の表に示します。
表8‒33 日時書式に指定できる要素 項番
日時書式に指定できる要素
単位
説明
1
CC
世紀
日時データを同世紀の最初の年の1月1日0時0分0秒に切り捨てます。
(例)
TRUNC(TIMESTAMP'2014-03-14 15:25:38','CC')
→TIMESTAMP'2001-01-01 00:00:00'
2
YYYY
YYYYN
YY
YYN
年
日時データを同年の1月1日0時0分0秒に切り捨てます。
(例)
TRUNC(TIMESTAMP'2014-03-14 15:25:38','YYYY')
→TIMESTAMP'2014-01-01 00:00:00'
3
Q
四半期
日時データを同四半期の最初の月の1日0時0分0秒に切り捨てます。
(例)
TRUNC(TIMESTAMP'2014-03-14 15:25:38','Q')
→TIMESTAMP'2014-01-01 00:00:00'
1月1日を基準にして,3か月単位を四半期とします。
-
第1四半期:1月1日〜3月31日
-
第2四半期:4月1日〜6月30日
-
第3四半期:7月1日〜9月30日
-
第4四半期:10月1日〜12月31日
4
MONTH
MON
MM
月
日時データを同月の1日0時0分0秒に切り捨てます。
(例)
TRUNC(TIMESTAMP'2014-03-14 15:25:38','MONTH')
→TIMESTAMP'2014-03-01 00:00:00'
5
WW
週
日時データを同週の開始日の0時0分0秒に切り捨てます。同年の最初の曜日を週の開始日とし,その週の開始日の0時0分0秒に切り捨てます。
(例)
TRUNC(TIMESTAMP'2014-03-14 15:25:38','WW')
→TIMESTAMP'2014-03-12 00:00:00'
2014年1月1日は水曜日のため,週の開始日は水曜日になります。そのため,その週の開始日(水曜日)である3月12日の0時0分0秒に切り捨てます。
6
W
週
日時データを同週の開始日の0時0分0秒に切り捨てます。同月の最初の曜日を週の開始日とし,その週の開始日の0時0分0秒に切り捨てます。
(例)
TRUNC(TIMESTAMP'2014-03-14 15:25:38','W')
→TIMESTAMP'2014-03-08 00:00:00'
2014年3月1日は土曜日のため,週の開始日は土曜日になります。そのため,その週の開始日(土曜日)である3月8日の0時0分0秒に切り捨てます。
7
DAY
DAYN
DY
DYN
D
週
日時データを同週の開始日の0時0分0秒に切り捨てます。日曜日を週の開始日とし,その週の開始日の0時0分0秒に切り捨てます。
(例)
TRUNC(TIMESTAMP'2014-03-14 15:25:38','DAY')
→TIMESTAMP'2014-03-09 00:00:00'
2014年3月14日は金曜日です。そのため,その週の開始日(日曜日)である3月9日の0時0分0秒に切り捨てます。
8
DD
DDD
日
日時データを同日の0時0分0秒に切り捨てます。
(例)
TRUNC(TIMESTAMP'2014-03-14 15:25:38','DD')
→TIMESTAMP'2014-03-14 00:00:00'
9
HH
HH12
HH24
時
日時データを同時の0分0秒に切り捨てます。
(例)
TRUNC(TIMESTAMP'2014-03-14 15:25:38','HH')
→TIMESTAMP'2014-03-14 15:00:00'
10
MI
分
日時データを同分の0秒に切り捨てます。
(例)
TRUNC(TIMESTAMP'2014-03-14 15:25:38','MI')
→TIMESTAMP'2014-03-14 15:25:00'
11
SSSSS
SS
秒
日時データの小数秒を切り捨てます。
(例)
TRUNC(TIME'11:58:31.784','SS')
→TIME'11:58:31.000'
-
-
日時書式に指定する文字データは,半角文字で指定してください。また,大文字,小文字は区別されません。
-
日時書式に指定できる要素が複数ある場合,どれか1つを指定してください。どの要素を指定しても同じ実行結果になります。例えば,日時書式の要素としてYYYYとYYYYNのどちらを指定しても実行結果は同じになります。
-
日時書式の要素の前後の空白は無視されます。
-
日時書式の長さは,64バイト以内にしてください。
-
(3) 規則
-
実行結果のデータ型とデータ長を次の表に示します。
表8‒34 スカラ関数TRUNCの実行結果のデータ型とデータ長 日時データのデータ型とデータ長
実行結果のデータ型とデータ長
DATE
DATE
TIME(p)
TIME(p)
TIMESTAMP(p)
TIMESTAMP(p)
(凡例)p:小数秒精度
-
実行結果の値は,非ナル値制約なし(ナル値を許す)となります。
-
日時データがナル値の場合,実行結果はナル値になります。
-
日時データがDATE型の場合に,日時書式に時刻を切り捨てる指定(DDD,DD,HH,HH12,HH24,MI,SSSSS,またはSS)をしたときは,入力された日時データをそのまま返します。
-
日時データにTIME型のデータを指定した場合,日時書式に世紀,年,四半期,月,週,日を丸める指定(CC,YYYY,YYYYN,YY,YYN,Q,MONTH,MON,MM,WW,W,DAY,DAYN,DY,DYN,D,DDD,またはDD)はできません。
-
日時書式にDAY,DAYN,DY,DYN,またはDを指定した場合,実行結果が0001年1月1日よりも前になるとエラーになります。
(4) 例題
- 例題
-
販売履歴表(SALESLIST)から,商品コード(PUR-CODE)P001の商品の販売個数を集計します。2013年11月の販売個数を週ごとに集計します。
SELECT SUM("PUR-NUM") FROM "SALESLIST" WHERE "PUR-DATE" BETWEEN DATE'2013-11-01' AND DATE'2013-11-30' AND "PUR-CODE"='P001' GROUP BY TRUNC("PUR-DATE",'DAY')
日時書式の要素にDAYを指定した場合,日曜日が週の開始日になり,週ごとの販売個数を集計できます。