SQLのTRUNC関数は、数値や日付データを指定した精度で切り捨てるための関数です。
不要な小数部分や時刻情報を取り除くことで、データの整形や分析を簡単にします。
数値データに対するTRUNC関数
TRUNC関数を数値に対して使用する場合、小数点以下の桁を切り捨てます。
必要に応じて切り捨てる桁数を指定できます。
構文
TRUNC(number [, precision])
- number
切り捨て対象の数値。 - precision
切り捨て後の小数点以下の桁数(省略可能)。
省略した場合は0が指定されたとみなされ、小数点以下がすべて切り捨てられます。
使用例
小数点以下をすべて切り捨て
SELECT TRUNC(123.456) AS result;
結果
result |
123 |
小数点以下を2桁に切り捨て
SELECT TRUNC(123.456, 2) AS result;
結果
result |
123.45 |
小数点以下を−1桁で切り捨て(整数部分の位を切り捨て)
SELECT TRUNC(123.456, -1) AS result;
結果
result |
120 |
日付データに対するTRUNC関数
TRUNC関数は日付データにも使用可能で、指定した単位に基づいて時刻情報や日付の細かい部分を切り捨てます。
これにより、特定の期間でデータをグルーピングしたり分析を行ったりするのに便利です。
構文
TRUNC(date [, format])
- date
切り捨て対象の日付。 - format
切り捨てる単位を指定する文字列(省略可能)。デフォルトでは日単位で切り捨てられます。
主要なformatオプション
フォーマット | 説明 |
'YEAR' | 年の初め |
'MONTH' | 月の初め |
'DAY' | 日単位(デフォルト) |
'HOUR' | 時単位 |
'MINUTE' | 分単位 |
使用例
デフォルト(日単位)で切り捨て
SELECT TRUNC(TO_DATE('2024-11-27 15:45:00', 'YYYY-MM-DD HH24:MI:SS')) AS result
FROM DUAL;
結果
result |
2024-11-27 |
月単位で切り捨て
SELECT TRUNC(TO_DATE('2024-11-27 15:45:00', 'YYYY-MM-DD HH24:MI:SS'), 'MONTH') AS result
FROM DUAL;
結果
result |
2024-11-01 |
年単位で切り捨て
SELECT TRUNC(TO_DATE('2024-11-27 15:45:00', 'YYYY-MM-DD HH24:MI:SS'), 'YEAR') AS result
FROM DUAL;
結果
result |
2024-01-01 |
TRUNC関数の実用例
データ分析での活用
月単位の売上集計
日付データを月単位で切り捨てることで、月ごとの売上を簡単に集計できます。
SELECT TRUNC(sales_date, 'MONTH') AS sales_month,
SUM(amount) AS total_sales
FROM sales
GROUP BY TRUNC(sales_date, 'MONTH');
整数部分のみを使用する計算
小数部分が不要な計算や処理に役立ちます。
SELECT employee_id, TRUNC(salary) AS base_salary FROM employees;
TRUNCと他の関数との違い
ROUNDとの比較
TRUNCとROUNDは類似していますが、挙動が異なります。
- TRUNC
指定した桁数で切り捨て。 - ROUND
指定した桁数で四捨五入。
例
SELECT TRUNC(123.456, 2) AS trunc_result,
ROUND(123.456, 2) AS round_result
FROM DUAL;
結果
trunc_result | round_result |
123.45 | 123.46 |
注意点
- TRUNCはデータを切り捨てるため、元のデータの精度が失われます。
精度が重要な場合は、元データをバックアップするか、加工後のデータを新しいカラムやテーブルに保存してください。 - 日付データのフォーマット指定は、使用するデータベースによって異なる場合があります(例: Oracle、PostgreSQLなど)。
公式ドキュメントを確認することをお勧めします。
まとめ
TRUNC関数は、数値や日付データを指定した単位で切り捨てる便利な関数です。分析やデータ整形の場面で頻繁に使用されるため、基本的な使い方を理解しておくことは非常に重要です。ROUNDとの違いを押さえつつ、実務で活用してみてください。