SQL Serverで文字列を日付/時刻の値に変換する必要がある場合は、いくつかのオプションがあります。この投稿では、これを可能にする6つのT-SQL関数の概要を説明します。
6つの機能は次のとおりです。
-
CAST()
-
CONVERT()
-
PARSE()
-
TRY_CAST()
-
TRY_CONVERT()
-
TRY_PARSE()
以下は、これらの関数を使用して文字列を日付/時刻データ型に変換する方法の例です。
CAST()関数
この例では、文字列を日付に変換します データ型(date
を使用してこれを指定します 2番目の引数として)。
SELECT CAST('20 Dec 2018' AS date) AS Result;
結果:
+------------+ | Result | |------------| | 2018-12-20 | +------------+
その他の例については、CAST()
を使用してSQLServerで文字列を日付/時刻に変換する方法を参照してください。 。
CONVERT()関数
ここでは、前の例と同じ変換を行いますが、CONVERT()
を使用します。 働き。ここでの唯一の違いは構文です。
SELECT CONVERT(date, '20 Dec 2018') AS Result;
結果:
+------------+ | Result | |------------| | 2018-12-20 | +------------+
その他の例については、CONVERT()
を使用してSQLServerで文字列を日付/時刻に変換する方法を参照してください。 。
PARSE()関数
この例では、文字列の一部として平日を追加します。私がこれを行う理由は、この関数が他の関数よりも優れていることを示すためです。この形式で他の関数に日付を指定すると、エラーが発生します。ただし、PARSE()
関数はこれを処理できます:
SELECT PARSE('Thursday, 20 Dec 2018' AS datetime2) AS 'Result';
結果:
+-----------------------------+ | Result | |-----------------------------| | 2018-12-20 00:00:00.0000000 | +-----------------------------+
その他の例については、PARSE()
を使用してSQLServerで文字列を日付/時刻に変換する方法を参照してください。 。
TRY_CAST()関数
TRY_CAST()
を使用できます CAST()
の代わりに エラーをよりスムーズに処理する方法を提供します。 CAST()
を使用する場合 関数、キャストが失敗した場合、エラーを返します。ただし、TRY_CAST()
を使用する場合 代わりに関数を返し、NULL
を返します そのような場合。
キャストが失敗した例は次のとおりです。
SELECT TRY_CAST('Next month' AS date) AS Result;
結果:
+----------+ | Result | |----------| | NULL | +----------+
同じ値をCAST()
に提供した場合 代わりに機能します。次のようになります。
SELECT CAST('Next month' AS date) AS Result;
結果:
Conversion failed when converting date and/or time from character string.
その他の例については、CAST
をご覧ください。 vs TRY_CAST
SQL Serverの場合:違いは何ですか?
TRY_CONVERT()関数
TRY_CONVERT()
を使用することもできます CONVERT()
の代わりに より良いエラー処理のために。 CONVERT()
の場合 関数が失敗すると、エラーが返されます。ただし、TRY_CONVERT()
失敗すると、NULL
を返します 。
変換が失敗した例を次に示します。
SELECT TRY_CONVERT(date, 'Next month') AS Result;
結果:
+----------+ | Result | |----------| | NULL | +----------+
同じ値をCONVERT()
に提供した場合 代わりに機能します。次のようになります。
SELECT CONVERT(date, 'Next month') AS Result;
結果:
Conversion failed when converting date and/or time from character string.
その他の例については、CONVERT
をご覧ください。 vs TRY_CONVERT
SQL Serverの場合:違いは何ですか?
TRY_PARSE()関数
TRY_PARSE()
を使用することもできます PARSE()
の代わりに より良いエラー処理のために。 PARSE()
の場合 関数が失敗すると、エラーが返されます。ただし、TRY_PARSE()
失敗すると、NULL
を返します 。
変換が失敗した例を次に示します。
SELECT TRY_PARSE('Next month' AS date) AS Result;
結果:
+----------+ | Result | |----------| | NULL | +----------+
同じ値をPARSE()
に提供した場合 代わりに機能します。次のようになります。
SELECT PARSE('Next month' AS date) AS Result;
結果:
Error converting string value 'Next month' into data type date using culture ''.