【Oracle】日付・数値の操作まとめ:SYSDATE/TO_DATE/ROUNDなど実務で役立つSQL例大全

IT技術情報

1. はじめに:業務でよく出る「日付・数値変換の罠」

Oracleでは、日付や数値を扱うときに

  • 「文字列を日付に変換できない」
  • 「日付の比較がうまくいかない」
  • 「小数点の丸めが想定と違う」
    といったトラブルが頻発します。

本記事では、よく使う基本構文と実務で役立つ応用例を、実際のSQLサンプル付きで整理します。

著:ミック
¥2,372 (2025/10/14 23:36時点 | Amazon調べ)
\楽天ポイント4倍セール!/
楽天市場

2. 日付操作の基本:SYSDATEとADD_MONTHS

■ 現在日付を取得

例)結果:2025-10-14 23:10:12


■ 日付の加算・減算

👉 Oracleでは 日付に数値を加える=日数の加算
+1 → 翌日、-1 → 前日)


■ 月単位での加算(ADD_MONTHS)

👉 日付を基準に3か月後を取得できます。


3. 月末・月初を求める方法

■ 月末を取得(LAST_DAY)

👉 結果例:2025-10-31


■ 月初を取得(TRUNC)

👉 結果例:2025-10-01


4. 文字列⇔日付変換(TO_DATE/TO_CHAR)

■ 文字列を日付に変換(TO_DATE)

👉 日付フォーマットは区切り文字も完全一致させるのがポイント。


■ 日付を文字列に変換(TO_CHAR)

👉 実務ではログ出力やメール通知でよく使用。


■ 日付フォーマット早見表

パターン意味
YYYY西暦4桁2025
MM月(2桁)10
DD日(2桁)14
HH24時(24時間表記)23
MI59
SS12

5. 日付の差分を求める(業務レポート系で多用)

👉 結果:14(14日差)
Oracleでは日付同士の差=日数になります。
時間単位まで出したい場合は *24*24*60 を掛けます。


6. 数値操作の基本(ROUND/TRUNC)

■ 四捨五入(ROUND)

👉 結果:123.46


■ 切り捨て(TRUNC)

👉 結果:123.45


■ 整数部のみ取得

👉 結果:123


7. 日付・数値操作の組み合わせ応用例

■ 支払期日を算出(請求日+30日)

👉 結果:2025/10/31


■ 売上レポートの「当月末日」計算


■ 小数点付き金額の処理(税計算)

👉 結果:13580
ROUND(..., 0)で整数丸め。


8. よくあるエラーと対策

エラー内容原因対策
ORA-01861: 文字がフォーマット文字列と一致しません'YYYY/MM/DD' に対して 'YYYY-MM-DD' 形式を渡している区切り文字も一致させる
ORA-00932: データ型が一致しません日付列と文字列を直接比較TO_DATEで明示的に変換
結果が1日ズレるタイムゾーン or 時刻部分を保持TRUNCで時刻切り捨て

9. まとめ:Oracleの日付・数値操作は業務効率化の要

カテゴリ関数よく使う用途
日付操作SYSDATE/ADD_MONTHS現在日付・期間加算
フォーマットTO_DATE/TO_CHAR文字列⇔日付変換
月初・月末TRUNC/LAST_DAY集計期間処理
数値処理ROUND/TRUNC金額計算・レポート丸め

実務では、**「フォーマット整形」と「端数処理」**が最も多く、
ここを正確に扱えるかどうかが、システム品質に直結します。

著:ミック
¥2,372 (2025/10/14 23:36時点 | Amazon調べ)
\楽天ポイント4倍セール!/
楽天市場

コメント

タイトルとURLをコピーしました