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