
スポンサーリンク
Oracleデータベースを扱う際、日付型のカラムから「日付のみ」や「月単位」、「年単位」などでデータを抽出したいケースは多く存在します。特に業務システムでは、売上やアクセスログなどを日単位・月単位で集計することが多く、SQLで効率よく扱う必要があります。
そのようなときに活躍するのが TRUNC
関数です。本記事では、oracle trunc 日付
をキーワードに、基本的な構文から実務での活用例、パフォーマンス上の注意点まで詳しく解説します。
TRUNC関数で時刻を切り捨てる
TRUNC
は「切り捨て」を意味し、数値だけでなく日付に対しても使用できます。日付に使うと、指定した粒度に応じて時刻部分を切り捨てます。例えば、2025-08-16 14:35:45
という日付に対して TRUNC(date, 'DD')
を適用すると、時刻は消えて 2025-08-16 00:00:00
になります。これにより「同じ日付」としてグルーピングしたり比較できるようになります。
TRUNCの基本構文
TRUNC(日付, 書式モデル)
- 日付: 日付型の値(DATE, TIMESTAMPなど)
- 書式モデル: MM(月の初日),YYYY(年の初日)など
TRUNCの利用例
日付のみ取得(時刻を消す)
SELECT TRUNC(SYSDATE) AS todayFROM dual;
出力例: 2025-08-16 00:00:00
月の初日を取得
SELECT TRUNC(SYSDATE, 'MM') AS month_startFROM dual;
出力例: 2025-08-01 00:00:00
年の初日を取得
SELECT TRUNC(SYSDATE, 'YYYY') AS year_startFROM dual;
出力例: 2025-01-01 00:00:00
週の開始日を取得(ISO週)
SELECT TRUNC(SYSDATE, 'IW') AS week_startFROM dual;
出力例: 2025-08-11 00:00:00
TRUNCでよく使うformat指定一覧
format | 意味 | 例 (SYSDATE=2025-08-16 14:35:45) | SQL例 |
---|---|---|---|
DD | 日単位 | 2025-08-16 00:00:00 | TRUNC(SYSDATE, 'DD') |
MM | 月単位 | 2025-08-01 00:00:00 | TRUNC(SYSDATE, 'MM') |
YYYY | 年単位 | 2025-01-01 00:00:00 | TRUNC(SYSDATE, 'YYYY') |
IW | ISO週 | 2025-08-11 00:00:00 | TRUNC(SYSDATE, 'IW') |
Q | 四半期 | 2025-07-01 00:00:00 | TRUNC(SYSDATE, 'Q') |
HH | 時単位 | 2025-08-16 14:00:00 | TRUNC(SYSDATE, 'HH') |
TRUNC関数まとめ
TRUNC
関数は、日付の「切り捨て」によって柔軟な集計や検索を可能にします。特に業務システムやレポート作成では、日次・月次・四半期・年次といった単位での分析に欠かせない存在です。また、パフォーマンスに注意しながら使うことで、大量データに対しても効率的に処理できます。oracle trunc 日付
の知識を深めることで、より実践的で信頼性の高いSQLを書くことができるようになるでしょう。
以上で本記事の解説を終わります。
よいITライフを!