SQL Serverでは、 CAST()
を使用できます あるデータ型の式を別のデータ型に変換する関数。この関数は、 CONVERT()
とほぼ同じように機能します 関数。ただし、構文が少し異なります(および CAST()
style
を受け入れません 引数)。
したがって、文字列を日付/時刻の値に変換する必要がある場合は、 CONVERT()
を使用できます。 関数またはCAST()
機能。
また、これら2つの関数の使用中にエラーが発生した場合は、 PARSE()
機能はまさにあなたが必要とするものかもしれません。
この記事には、 CAST()
を使用した例が含まれています 機能。
構文
構文は次のようになります:
CAST ( expression AS data_type [ ( length ) ] )
これらの引数は次のように定義されています。
式
- 有効な式。
-
data_type
- ターゲットデータ型。これには、 xmlが含まれます 、 bigint 、および sql_variant 。エイリアスデータ型は使用できません。
長さコード>
- ターゲットデータ型の長さを指定するオプションの整数。デフォルト値は
30
です 。
例1-日付データ型に変換
この例では、文字列を日付に変換します データ型( date
を使用してこれを指定します 2番目の引数として)。
SELECT CAST('20 Dec 2018' AS date) AS Result;
結果:
+------------+ | Result | |------------| | 2018-12-20 | +------------+
CONVERT()
と同じように 文字列は、指定されたデータ型に変換できるスタイルである必要があります。そうでない場合、エラーが発生します:
SELECT CAST('Homer' AS date) AS Result;
結果:
Conversion failed when converting date and/or time from character string.
例2–日時データ型に変換
この例では、日時に変換します データ型:
SELECT CAST('20 Dec 2018' AS datetime) AS Result;
結果:
+-------------------------+ | Result | |-------------------------| | 2018-12-20 00:00:00.000 | +-------------------------+
日付とともに時刻を指定することもできます:
SELECT CAST('2pm 20 Dec 2018' AS datetime) AS Result;
結果:
+-------------------------+ | Result | |-------------------------| | 2018-12-20 14:00:00.000 | +-------------------------+
例3–datetime2データ型に変換
ここでは、 datetime2に変換します データ型:
SELECT CAST('20 Dec 2018' AS datetime2) AS Result;
結果:
+-----------------------------+ | Result | |-----------------------------| | 2018-12-20 00:00:00.0000000 | +-----------------------------+
例4–datetimeoffsetデータ型に変換
この例では、 datetimeoffsetに変換します データ型:
SELECT CAST('20 Dec 2018' AS datetimeoffset) AS Result;
結果:
+------------------------------------+ | Result | |------------------------------------| | 2018-12-20 00:00:00.0000000 +00:00 | +------------------------------------+
例5–smalldatetimeデータ型に変換
ここでは、 smalldatetimeに変換します データ型:
SELECT CAST('20 Dec 2018' AS smalldatetime) AS Result;
結果:
+---------------------+ | Result | |---------------------| | 2018-12-20 00:00:00 | +---------------------+
例6–時間データ型に変換
この例では、時間に変換します データ型:
SELECT CAST('20 Dec 2018' AS time) AS Result;
結果:
+----------+ | Result | |----------| | 00:00:00 | +----------+
その場合、日付は指定しましたが、時刻は指定しなかったため、 00:00:00
として返されました。 。実際に時間を指定する別の例を次に示します。
SELECT CAST('2pm' AS time) AS Result;
結果:
+----------+ | Result | |----------| | 14:00:00 | +----------+
ただし、日付を追加すると、エラーが発生します( datetime に変換した前の例とは異なります) ):
SELECT CAST('2pm 20 Dec 2018' AS time) AS Result;
結果:
Conversion failed when converting date and/or time from character string.
したがって、この場合、日時に変換する必要があります またはsmalldatetime 。
例7–日付の省略
日時に変換するときに日付を省略した場合 またはsmalldatetime データ型の場合、 1900-01-01
が返されます 日付として:
SELECT CAST('2pm' AS datetime) AS Result;
結果:
+-------------------------+ | Result | |-------------------------| | 1900-01-01 14:00:00.000 | +-------------------------+
CONVERT()
を使用する場合 関数、日付/時刻までのこれらの文字列を参照してください CONVERT()
上記と同じ例を使用した例。
また、前述のように、文字列を日付に変換しようとしたときにエラーが発生した場合は、 PARSE()
を試してください。 代わりに機能します。 CAST()
の場合に機能します しません。