CONVERT、CAST、FORMAT:SQL Server で DATETIME を操作するための関数比較
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