sql >> データベース >  >> RDS >> Sqlserver

CAST()を使用してSQLServerで文字列を日付/時刻に変換する方法

    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()の場合に機能します しません。


    1. 新しいMicrosoftSSMAバージョン7.8を使用する際に避けるべき落とし穴

    2. MariaDBのストレージエンジンオプションの調査

    3. mysql_fetch_array、mysql_fetch_assoc、mysql_fetch_object

    4. SQLトランザクションチュートリアル