SQLで日付や日時を扱っていると、
「YYYYMMDD形式で出したい」「時刻付きで表示したい」
といった場面は頻繁にあります。
そんなときに使うのが TO_CHAR 関数 です。
この記事では、
-
TO_CHARの基本的な使い方
-
日時を文字列に変換する代表的なフォーマット
-
よくあるミスと注意点
を 実務ですぐ使える例付き で解説します。
TO_CHARとは?
TO_CHAR は、日付・日時・数値を文字列に変換するSQL関数です。
特にOracle SQLでは、
-
日付型(DATE)
-
タイムスタンプ(TIMESTAMP)
を 指定フォーマットの文字列 に変換する際によく使われます。
TO_CHARの基本構文(日時変換)
使用例
結果例
よく使う日時フォーマット一覧
日付のみ
| フォーマット | 出力例 | 説明 |
|---|---|---|
| YYYYMMDD | 20251213 | ファイル名・キー用 |
| YYYY/MM/DD | 2025/12/13 | 表示用(スラッシュ) |
| YYYY-MM-DD | 2025-12-13 | ISO形式 |
| MM/DD/YYYY | 12/13/2025 | 海外向け |
日時(時刻あり)
| フォーマット | 出力例 | 説明 |
|---|---|---|
| YYYY/MM/DD HH24:MI | 2025/12/13 16:30 | 分まで表示 |
| YYYY/MM/DD HH24:MI:SS | 2025/12/13 16:30:45 | 秒まで表示 |
| HH24:MI:SS | 16:30:45 | 時刻のみ |
年・月・日を個別に扱う
| フォーマット | 出力例 |
|---|---|
| YYYY | 2025 |
| MM | 12 |
| DD | 13 |
12時間表記と24時間表記の違い
24時間表記(推奨)
12時間表記(AM/PM付き)
⚠ 実務では HH24 を使う方が安全
(AM/PMの付け忘れによる誤認識を防げる)
TIMESTAMP型でも使える?
はい、TIMESTAMP 型でも同様に使えます。
よくあるミスと注意点
① 日付を文字列として比較してしまう
👉 検索条件では日付型のまま比較するのが基本
|
1 2 |
WHERE order_date >= DATE '2025-12-13' AND order_date < DATE '2025-12-14' |
② フォーマットを間違える
| 間違い | 正しい |
|---|---|
| HH | HH24 |
| mm | MI |
| dd | DD |
👉 分は MI、月は MM
③ NLS設定に依存する
TO_CHAR は NLS_DATE_LANGUAGE の影響を受ける場合があります。
帳票・CSV出力では 明示的なフォーマット指定 が安全です。
TO_DATE / TO_TIMESTAMP との違い
| 関数 | 役割 |
|---|---|
| TO_CHAR | 日時 → 文字列 |
| TO_DATE | 文字列 → 日付 |
| TO_TIMESTAMP | 文字列 → タイムスタンプ |
👉 表示用は TO_CHAR、計算・比較は日付型のまま
まとめ
-
日時を指定フォーマットで表示したいときは TO_CHAR
-
YYYYMMDDやHH24:MI:SSは実務で頻出 -
検索条件では 文字列変換しない のが重要
TO_CHARを正しく使えるようになると、
ログ出力・帳票・ファイル連携が一気に楽になります。
