秒単位を切り捨てる、週の初めの日付を求める、四半期を求める、年を・・・
⇒ 数値の切り捨て処理(TRUNCate)

TRUNC ( datetime [, format] )
return [ date ]

datetime | 切り捨てを行なう日時式(DATE 型) | |
format | 切り捨てする時間の要素 | default 'DD' |


切り捨てする時間の要素(一部)
format 引数 | 内容 |
CC | 西暦 |
YYYY | 年 |
IYYY | ISO 年 |
Q | 四半期 |
MM | 月 |
WW | その年の最初の曜日 |
IW | ISO 年での最初の曜日 |
W | その月の最初の曜日 |
DAY | 週 |
DD | 日 (デフォルト) |
HH | 時 |
MI | 分 |
SS | DATE 型精度なので秒単位は無い |
TRUNC(日時) 関数の内容
切り捨てを行なう日時式 datetime を 切り捨てする時間の要素 format (省略時 DD) で切り捨てた値を戻す。
注意
TRUNC で使用される datetime の型は DATE 型であるため、TIMESTAMP 型を使用すると DATE 型に 暗黙変換 される。また DATE 型の精度のため秒単位での切り捨ては用意されていない。(Oracle 10g R2 時点)
週の初めの日の定義
切り捨てする時間の要素 format の 'DAY' 指定は週初めの日を戻すが週初めは NLS_TERITORY パラメータによって変わる。
NLS_TERITORY = Japan における週の初めは日曜日に定義されている。
TRUNC(日時) 使用例
SQL> select dt, fmt, TRUNC(dt, fmt) from trunc_date_sample;
DT FMT TRUNC(DT,FMT)
------------------- -------- -------------------
2007-07-07 23:30:40 MI 2007-07-07 23:30:00
2007-07-07 23:30:40 HH 2007-07-07 23:00:00
2007-07-07 23:30:40 DD 2007-07-07 00:00:00
2007-07-07 23:30:40 DAY 2007-07-01 00:00:00 -- 2007-07/01(日曜日)
2007-07-07 23:30:40 MM 2007-07-01 00:00:00
2007-07-07 23:30:40 YYYY 2007-01-01 00:00:00
2000-01-01 00:00:00 CC 1901-01-01 00:00:00
SQL> select TRUNC(systimestamp, 'SS') from dual;
select trunc(systimestamp, 'SS') from dual
*
行1でエラーが発生しました。:
ORA-01899: 精度指定子が正しくありません。
SQL 関数 - TRUNC 関連
関連事項