【SQL Server】DateTime型を希望の形にフォーマットする方法を解説

【SQL Server】DateTime型を希望の形にフォーマットする方法を解説

SQL Serverでデータを扱うとき、日付や時刻の管理は意外と悩みの種です。

例えば、デフォルトのままGETDATE() を表示すると「2025-09-26 09:12:34.123」といった形式になり、見た目が少し扱いにくい場合があったりします。

業務報告書やCSV出力、画面表示などで「YYYY/MM/DD」や「YYYY年MM月DD日 HH時MM分」といった形に整えたいことは多いはずです。

この記事では、SQL ServerでDataTime型を希望の形式にフォーマットする方法を、実務で使える具体例とともに解説します。

CONVERTFORMAT 関数を使った簡単な方法から、応用的な日付抽出まで、今日からすぐに使えるテクニックを紹介します。

目次

基本的なフォーマット方法

【Laravel】複数のデータベースを簡単に管理する方法を解説

SQL ServerでDataTime型を希望の形に変換する方法はいくつかあります。ここでは代表的な3つの方法を紹介します。

1. CONVERT関数を使う

CONVERT 関数はSQL Serverで昔から使われている日付フォーマットの定番です。書式は以下の通りです。

CONVERT(データ型, 値, スタイル番号)

例として、現在日時を「YYYY-MM-DD HH:MM:SS」形式で表示する場合は次のように書きます。

SELECT CONVERT(VARCHAR, GETDATE(), 120) AS FormattedDate;

よく使うスタイル番号一覧

スタイル形式例
101MM/DD/YYYY
103DD/MM/YYYY
120YYYY-MM-DD HH:MI:SS
121YYYY-MM-DD HH:MI:SS.mmm

スタイル番号を変えるだけで、表示形式を簡単に切り替えられます。

2. FORMAT関数を使う

FORMAT 関数はより自由度の高いフォーマットが可能で、文字列として日時を整形できます。

FORMAT(値, '書式')

SELECT FORMAT(GETDATE(), 'yyyy/MM/dd HH:mm:ss') AS FormattedDate;
SELECT FORMAT(GETDATE(), 'yyyy年MM月dd日 HH時mm分ss秒') AS JapaneseDate;
  • yyyy → 年
  • MM → 月(2桁)
  • dd → 日(2桁)
  • HH → 時(24時間表記)
  • mm → 分
  • ss → 秒

日本語表記や独自の区切り文字も簡単に使えます。

注意点:FORMAT は便利ですが、大量データの処理ではやや処理が重くなる場合があります。

3. CAST関数を使う

CAST 関数はデータ型を変換する基本的な方法です。文字列型にキャストすることで日付を文字列として扱えます。

CAST(GETDATE() AS VARCHAR(19)) AS FormattedDate;

ただし、フォーマットの自由度はCONVERTFORMAT より低いので、簡単な変換や一時的な出力に向いてます。

よく使うフォーマットパターン(応用的な使い方)

日付や時刻は業務や出力先によってさまざまな形式で必要になります。ここでは、SQL Serverでよく使われるフォーマットパターンをまとめます。

1. 年月日のみ表示

-- CONVERTの場合
SELECT CONVERT(VARCHAR, GETDATE(), 23) AS DateOnly;  -- YYYY-MM-DD

-- FORMATの場合
SELECT FORMAT(GETDATE(), 'yyyy/MM/dd') AS DateOnly;

2. 時刻のみ表示

-- CONVERTの場合
SELECT CONVERT(VARCHAR, GETDATE(), 108) AS TimeOnly;  -- HH:MI:SS

-- FORMATの場合
SELECT FORMAT(GETDATE(), 'HH:mm:ss') AS TimeOnly;

3. 年月日 + 時刻

-- CONVERTの場合
SELECT CONVERT(VARCHAR, GETDATE(), 120) AS DateTimeFull;  -- YYYY-MM-DD HH:MI:SS

-- FORMATの場合
SELECT FORMAT(GETDATE(), 'yyyy/MM/dd HH:mm') AS DateTimeShort;  -- YYYY/MM/DD HH:MM

4. 日本語表記

SELECT FORMAT(GETDATE(), 'yyyy年MM月dd日 HH時mm分ss秒') AS JapaneseDate;
  • 日本語や独自区切り文字も FORMAT を使えば簡単に表現可能
  • 報告書や画面表示用に便利

5. カスタム文字列での組み合わせ

SELECT FORMAT(GETDATE(), 'yyyyMMdd_HHmmss') AS CustomFormat;  -- 例: 20250926_091234
  • ファイル名やログ出力でよく使われる形式
  • 文字列として扱えるので、後続処理で自由に操作可能

まとめ

【PostgreSQL】文字列から数値型への変換方法を解説

SQL ServerでDateTime型を扱う際、希望の形式にフォーマットする方法を覚えておくと、業務でのデータ表示やCSV出力、レポート作成がぐっと楽になります。

  • CONVERT関数:昔からある定番の方法。スタイル番号を指定するだけで簡単に整形可能。高速で大量データにも向く。
  • FORMAT関数:自由度が高く、年月日や時刻を日本語表記や独自形式で表示できる。ただし大量データではやや処理が重くなる場合あり。
  • CAST関数:型を文字列に変換するシンプルな方法。簡単な表示用に便利。

さらに、年月日だけ、時刻だけ、日本語表記、カスタム形式の方法など、用途に合わせたフォーマットパターンも紹介しました。

実務ではCONVERTFORMAT を使い分け、必要に応じてカスタム形式を活用することで、見やすくかつ扱いやすい日付表示が可能になります。

今日紹介したサンプルコードを参考にして、ご自身の業務やシステムに合ったフォーマットをぜひ試してみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

沖縄出身のエンジニアです。IT業界で5年以上の経験があり、主にC#やPHPを使って開発を行ってきました。新しい技術にも興味があり、日々学びながらスキルアップを目指しています。

コメント

コメントする

CAPTCHA


目次