Hitachi

Hitachi Advanced Data Binder SQLリファレンス


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つを指定してください。どの要素を指定しても同じ実行結果になります。例えば,日時書式の要素としてYYYYYYYYNのどちらを指定しても実行結果は同じになります。

  • 日時書式の要素の前後の空白は無視されます。

  • 日時書式の長さは,64バイト以内にしてください。

(3) 規則

  1. 実行結果のデータ型とデータ長を次の表に示します。

    表8‒34 スカラ関数TRUNCの実行結果のデータ型とデータ長

    日時データのデータ型とデータ長

    実行結果のデータ型とデータ長

    DATE

    DATE

    TIME(p)

    TIME(p)

    TIMESTAMP(p)

    TIMESTAMP(p)

    (凡例)p:小数秒精度

  2. 実行結果の値は,非ナル値制約なし(ナル値を許す)となります。

  3. 日時データがナル値の場合,実行結果はナル値になります。

  4. 日時データがDATE型の場合に,日時書式に時刻を切り捨てる指定(DDDDDHHHH12HH24MISSSSS,またはSS)をしたときは,入力された日時データをそのまま返します。

  5. 日時データにTIME型のデータを指定した場合,日時書式に世紀,年,四半期,月,週,日を丸める指定(CCYYYYYYYYNYYYYNQMONTHMONMMWWWDAYDAYNDYDYNDDDD,またはDD)はできません。

  6. 日時書式にDAYDAYNDYDYN,またはDを指定した場合,実行結果が0001年1月1日よりも前になるとエラーになります。

(4) 例題

例題

販売履歴表(SALESLIST)から,商品コード(PUR-CODEP001の商品の販売個数を集計します。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を指定した場合,日曜日が週の開始日になり,週ごとの販売個数を集計できます。