【Oracle】TRUNC関数で日付を切り捨てる方法

【Oracle】TRUNC関数で日付を切り捨てる方法

記事の文字数:1398

本記事では、OracleデータベースにおけるTRUNC関数で日付を扱う方法を解説します。TRUNC関数の基本的な構文から日付・月・年・週・時間・分までの切り捨て方法を紹介。これからOracleの日付操作の基礎を理解し、効率的なSQLを書くための参考となる記事です。

Oracleデータベースを扱う際、日付型のカラムから「日付のみ」や「月単位」、「年単位」などでデータを抽出したいケースは多く存在します。特に業務システムでは、売上やアクセスログなどを日単位・月単位で集計することが多く、SQLで効率よく扱う必要があります。

そのようなときに活躍するのが TRUNC 関数です。本記事では、oracle trunc 日付のキーワードに対し、基本的な構文から実務での活用例を詳しく解説します。

【Oracle】TRUNCは日付を切り捨てる関数

TRUNC は「切り捨て」を意味し、数値だけでなく日付に対しても使用できます。日付に使うと、指定した粒度に応じて時刻部分を切り捨てます。

例えば、2025-08-16 14:35:45 という日付に対して TRUNC(date, 'DD') を適用すると、時刻は消えて 2025-08-16 00:00:00 になります。これにより「同じ日付」としてグルーピングしたり比較できるようになります。

TRUNC関数で日付を扱う基本構文

OracleのTRUNC関数は下記構文で書きます。

TRUNC(日付, 書式モデル)
  • 日付: 日付型の値(SYSDATE, TIMESTAMPなど)
  • 書式モデル: MM(月の初日),YYYY(年の初日)など

TRUNC関数で当日の時分秒を切り捨てて取得する

SELECT TRUNC(SYSDATE) AS today
FROM dual;

出力例: 2025-08-16 00:00:00

TRUNC関数で月の初日を取得する

SELECT TRUNC(SYSDATE, 'MM') AS month_start
FROM dual;

出力例: 2025-08-01 00:00:00

TRUNC関数で年の初日を取得する

SELECT TRUNC(SYSDATE, 'YYYY') AS year_start
FROM dual;

出力例: 2025-01-01 00:00:00

TRUNC関数で週の開始日を取得する(月曜始まり)

SELECT TRUNC(SYSDATE, 'IW') AS week_start
FROM dual;

出力例: 2025-08-11 00:00:00

TRUNC関数でよく使うformat指定一覧

format切り捨て単位例 (SYSDATE=2025-08-16 14:35:45)SQL例
DD日単位2025-08-16 00:00:00TRUNC(SYSDATE, 'DD')
MM月単位2025-08-01 00:00:00TRUNC(SYSDATE, 'MM')
YYYY年単位2025-01-01 00:00:00TRUNC(SYSDATE, 'YYYY')
IWISO週2025-08-11 00:00:00TRUNC(SYSDATE, 'IW')
Q四半期2025-07-01 00:00:00TRUNC(SYSDATE, 'Q')
HH時単位2025-08-16 14:00:00TRUNC(SYSDATE, 'HH')
MI分単位2025-08-16 14:35:00TRUNC(SYSDATE, 'MI')

【Oracle】TRUNC関数まとめ

TRUNC 関数は、日付の「切り捨て」によって柔軟な集計や検索を可能にします。特に業務システムやレポート作成では、日次・月次・四半期・年次といった単位での分析に欠かせない存在です。

OracleのTRUNC関数で日付を扱う知識を深めることで、より実践的で信頼性の高いSQLを書くことができるようになります。


以上で本記事の解説を終わります。
よいITライフを!
スポンサーリンク
Scroll to Top