CONVERT、CAST、FORMAT:SQL Server で DATETIME を操作するための関数比較

2024-06-26

SQL Server で DATETIME を文字列に変換する方法(T-SQL)

CONVERT 関数は、あるデータ型を別のデータ型に変換するために使用されます。 DATETIME を文字列に変換するには、次のような構文を使用します。

CONVERT(varchar(255), datetime_column, style)

ここで、

  • datetime_column は変換する DATETIME 列名です。

例:

-- 現在の日付と時刻を YYYY-MM-DD HH:MM:SS 形式で文字列に変換する
SELECT CONVERT(varchar(255), GETDATE(), 121) AS formatted_datetime;

CAST 関数を使用する

CAST(datetime_column AS varchar(255))

この構文は CONVERT 関数と同じですが、スタイル番号を指定する必要がありません。 CAST 関数は、出力形式をデータベース設定に基づいて決定します。

-- 現在の日付と時刻を現在のデータベース設定に基づいた形式で文字列に変換する
SELECT CAST(GETDATE() AS varchar(255)) AS formatted_datetime;

補足:

  • 上記の例では、varchar(255) データ型を仮定しています。 必要に応じて、別のデータ型に変更できます。
  • 文字列形式をさらにフォーマットするには、SUBSTRING関数、REPLACE関数などの他の T-SQL 関数と組み合わせて使用できます。



    YYYY-MM-DD

    -- 現在の日付を YYYY-MM-DD 形式で文字列に変換する
    SELECT CONVERT(varchar(255), GETDATE(), 120) AS formatted_date;
    

    HH:MM:SS

    -- 現在時刻を HH:MM:SS 形式で文字列に変換する
    SELECT CONVERT(varchar(255), GETDATE(), 108) AS formatted_time;
    

    YYYY-MM-DD HH:MM:SS

    -- 現在の日付と時刻を YYYY-MM-DD HH:MM:SS 形式で文字列に変換する
    SELECT CONVERT(varchar(255), GETDATE(), 121) AS formatted_datetime;
    

    曜日を含むカスタム形式

    -- 現在の日付と時刻を "曜日, YYYY-MM-DD HH:MM:SS" 形式で文字列に変換する
    SELECT
        CONVERT(varchar(255), GETDATE(), 112) + ', ' +
        CONVERT(varchar(255), GETDATE(), 121) AS formatted_datetime;
    

    ユーザー定義の書式設定

    -- ユーザー定義の書式設定文字列を使用して現在の日付と時刻を文字列に変換する
    SELECT
        CONVERT(varchar(255), GETDATE(), 0) + ' ' +
        CONVERT(varchar(255), GETDATE(), 108) AS formatted_datetime;
    

    これらの例はほんの一例であり、T-SQL で DATETIME を文字列に変換するために使用できる方法は他にもたくさんあります。 詳細については、Microsoft のドキュメント を参照してください。




    SQL Server で DATETIME を文字列に変換するその他の方法

    SELECT FORMAT(datetime_column, 'yyyy-MM-dd HH:mm:ss') AS formatted_datetime;
    

    この構文は、CONVERT 関数と似ていますが、FORMAT 関数はより柔軟な書式設定オプションを提供します。 書式文字列の詳細については、Microsoft のドキュメント を参照してください。

    -- 現在の日付と時刻を "曜日、YYYY-MM-DD HH:MM:SS" 形式で文字列に変換する
    SELECT FORMAT(GETDATE(), 'dddd, yyyy-MM-dd HH:mm:ss') AS formatted_datetime;
    

    STRDATETIME 関数は、DATETIME 値を文字列に変換するために使用されます。 この関数は、CONVERT 関数と FORMAT 関数よりもシンプルで、よく使用される形式の文字列を生成します。

    -- 現在の日付と時刻を YYYY-MM-DD HH:MM:SS 形式で文字列に変換する
    SELECT STRDATETIME(GETDATE(), '%Y-%m-%d %H:%M:%S') AS formatted_datetime;
    
    -- 現在の日付を YYYY-MM-DD 形式で文字列に変換する
    SELECT STRDATETIME(GETDATE(), '%Y-%m-%d') AS formatted_date;
    

    STUFF 関数と SUBSTRING 関数は、文字列を操作するために使用できます。 これらの関数を組み合わせて、DATETIME 値を文字列に変換することもできますが、これはより複雑で非効率的な方法です。

    -- 現在の日付と時刻を YYYY-MM-DD HH:MM:SS 形式で文字列に変換する
    SELECT
        SUBSTRING(
            STUFF(
                CONVERT(varchar(255), GETDATE(), 121),
                13, 0, '-'
            ),
            1, 10
        ) + ' ' +
        SUBSTRING(
            STUFF(
                CONVERT(varchar(255), GETDATE(), 121),
                24, 0, ':'
            ),
            1, 13
        ) AS formatted_datetime;
    

    DATETIME を文字列に変換するには、さまざまな方法があります。 最適な方法は、要件と好みのスタイルによって異なります。 一般的な要件については、CONVERT 関数または FORMAT 関数を使用することをお勧めします。 より高度な書式設定が必要な場合は、STRDATETIME 関数または STUFF 関数と SUBSTRING 関数の組み合わせを検討してください。


      sql-server t-sql


      SQL Server パフォーマンス向上: 読み取りクエリとトランザクションの最適化

      SQL Server トランザクションは、一連のデータベース操作を単一のユニットとして扱い、原子性、一貫性、分離性、耐久性 (ACID) を保証します。読み取りクエリは、データの状態を読み出すだけの操作です。疑問:読み取りクエリにもトランザクションが必要でしょうか?...


      SQL Server 関数・ストアドプロシージャ・ビュー: 使い分けとサンプルコード

      関数は、数学演算や文字列操作など、単純なタスクを実行するために使用されます。 引数を渡して値を返すことができ、SELECT ステートメントの中で呼び出すことができます。一方、ストアドプロシージャは、複数のSQL ステートメントをまとめて実行するプログラムです。 データベースへのアクセス、複雑な処理の実行、トランザクション制御など、幅広い用途に使用できます。 パラメータを受け取ることができ、出力値を返すこともできます。...


      なぜ SQL Server における datetime 型の最小値は 1753-01-01 なのか?

      SQL Server における datetime 型の最小値は 1753-01-01 00:00:00. 000 です。これは、SQL Server が Sybase から派生したためであり、Sybase が採用していた日付システムに由来します。...


      SQL Server 2008でランダム整数生成を極める:応用テクニックとトラブルシューティング

      SQL Server 2008 で、3 から 6 までのランダムな整数値を生成するには、いくつかの方法があります。ここでは、最も一般的な 2 つの方法を紹介します。方法 1: NEWID() 関数を使用するNEWID() 関数は、ランダムな 16 バイトのバイナリ値を生成します。このバイナリ値を整数値に変換するには、ABS() 関数と FLOOR() 関数を使用します。...


      SQL ServerクエリでNULL値を置き換える方法の比較

      SQL ServerクエリでNULL値を0に置き換える方法はいくつかあります。ここでは、代表的な方法であるISNULL()関数とCASE式をご紹介します。ISNULL()関数は、最初の引数がNULLかどうかをチェックし、NULLの場合は2番目の引数を返します。...