「駑馬十駕」を信念に IT系情報を中心に調べた事をコツコツ綴っています。

SQLで数値や日付を扱っていると、「小数点以下を切り捨てたい」「必ず切り上げたい」といった場面は頻繁にあります。
そのような時に使う代表的な関数が TRUNCCEIL です。

本記事では、それぞれの役割・違い・具体的な使用例を、数値と日付の両方でわかりやすく解説します。


TRUNC とは(切り捨て)

SQL 切り捨てイメージ

TRUNC は、指定した桁より下を切り捨てる関数です。
四捨五入は行わず、単純に「不要な部分を削る」動作になります。

数値を切り捨てる

桁数を指定することで、小数点以下の任意の位置まで残すことも可能です。

指定値意味
省略小数点以下をすべて切り捨て
1小数第1位まで残す
2小数第2位まで残す

日付を切り捨てる(TRUNC(日付))

TRUNC は日付型にも使用できます。
この場合、指定した単位より下の情報を切り捨てます。

→ 時刻部分(時・分・秒)がすべて 00:00:00 になります。

単位を指定する例:

→ 月初の日付に切り捨て

→ 年初(1月1日)に切り捨て


CEIL とは(切り上げ)

SQL 切り上げイメージ

CEIL は、指定した値以上の最小の整数を返す関数です。
小数点以下が少しでもあれば、必ず切り上げられます。

ポイントは以下の通りです。

  • 小数点以下が 0より大きい → 切り上げ

  • すでに整数 → そのまま返却


TRUNC と CEIL の違いまとめ

関数動作主な用途
TRUNC切り捨て金額計算、日付の正規化
CEIL切り上げ件数計算、ページ数算出

よくある使用シーン

金額計算で端数を切り捨てたい

ページ数を切り上げたい(1ページ10件)

日付の比較を簡単にしたい

時刻の影響を排除したい場合に非常によく使われます。


注意点

  • TRUNC は四捨五入ではない

    • 四捨五入したい場合は ROUND を使用する

  • CEIL は日付には使えない

    • 日付の切り上げは TRUNC + INTERVAL などで対応する


DBMS別|切り捨て・切り上げ関数の比較表

数値の切り捨て・切り上げ

DBMS切り捨て切り上げ備考
OracleTRUNC(n)CEIL(n)TRUNCは桁指定・日付対応あり
MySQLTRUNCATE(n, d)CEILING(n) / CEIL(n)TRUNCATEは小数桁指定必須
PostgreSQLTRUNC(n)CEILING(n) / CEIL(n)標準SQL寄り
SQL ServerFLOOR(n)CEILING(n)TRUNCは存在しない
SQLiteCAST(n AS INT)CEILING(n)CASTは負数に注意
MariaDBTRUNCATE(n, d)CEILING(n)MySQL互換

小数点以下の挙動例(123.456 の場合)

DBMS切り捨て結果切り上げ結果
OracleTRUNC(123.456) → 123CEIL(123.456) → 124
MySQLTRUNCATE(123.456, 0) → 123CEILING(123.456) → 124
PostgreSQLTRUNC(123.456) → 123CEIL(123.456) → 124
SQL ServerFLOOR(123.456) → 123CEILING(123.456) → 124

まとめ

  • 切り捨てたい → TRUNC

  • 必ず切り上げたい → CEIL

  • 数値だけでなく、日付処理にも TRUNC は頻出

  • 集計・比較・表示調整で覚えておくと非常に便利

SQLの可読性と正確性を上げるためにも、用途に応じて正しく使い分けましょう。

0 0
Article Rating
申し込む
注目する
guest
0 コメント一覧
最も古い
最新 高評価
インラインフィードバック
すべてのコメントを見る

Ads by Google

0 0
Article Rating
申し込む
注目する
guest
0 コメント一覧
最も古い
最新 高評価
インラインフィードバック
すべてのコメントを見る
0
あなたの考えが大好きです、コメントしてください。x