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

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

    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()を使用して文字列を日付/時刻に変換する方法は次のとおりです。 。


    1. OracleSQLでの日付の比較

    2. listviewは、Androidのデータベースからのデータを表示します

    3. SQL Serverで連結文字列にセパレータを追加する方法– CONCAT_WS()

    4. MariaDBで名前付きタイムゾーンを設定する方法