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

CONVERT()を使用してSQLServerで1つの日付形式から別の日付形式に変換する方法

    データベースやその他のプログラミング環境で作業しているときに、日付値を取得しても、形式/データ型が間違っている場合があります。たとえば、組み込みの日付関数を使用して日付が生成された場合、最後のナノ秒までの日付と時刻の両方が含まれる場合があります。そして、必要なのは日、月、年だけです。たとえば、2018-01-01のように言います。

    SQL Serverの使用中にこれが発生した場合は、 CONVERT()を使用できます。 別のデータ型に変換する関数。これを行うと、データ型によって表示される形式が決まります。

    この記事では、 CONVERT()の使用例を紹介します。 SQL Serverの関数を使用して、日付値を別の(日付)データ型に変換します。

    構文

    まず、公式の構文は次のとおりです。

    CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

    これらの引数は次のように定義されています。

    有効な式。
    data_type
    ターゲットデータ型。これには、 xmlが含まれます 、 bigint 、および sql_variant 。エイリアスデータ型は使用できません。
    長さ
    ターゲットデータ型の長さを指定するオプションの整数。デフォルト値は30です 。
    スタイル
    CONVERT()の方法を指定する整数式 関数はを変換します 。 NULLのスタイル値の場合、NULLが返されます。 data_type 範囲を決定します。

    例1-SYSDATETIME()から日付データ型に変換

    この例では、 SYSDATETIME()を使用して現在の日付/時刻を生成します。 関数を作成し、それを日付に変換します データ型。

    SYSDATETIME()に注意してください その値をdatetime2(7)として生成します データ型なので、そのデータ型から別のデータ型に変換しています。

    SELECT 
        SYSDATETIME() AS Original,
        CONVERT(date, SYSDATETIME()) AS Converted;

    結果:

    +-----------------------------+-------------+
    | Original                    | Converted   |
    |-----------------------------+-------------|
    | 2018-06-06 22:53:47.2318751 | 2018-06-06  |
    +-----------------------------+-------------+
    

    例2– SYSDATETIME()からsmalldatetimeデータ型に変換する

    この例では、日付を smalldatetimeに変換します データ型。

    SELECT 
        SYSDATETIME() AS Original,
        CONVERT(smalldatetime, SYSDATETIME()) AS Converted;

    結果:

    +-----------------------------+---------------------+
    | Original                    | Converted           |
    |-----------------------------+---------------------|
    | 2018-06-06 22:56:51.6873250 | 2018-06-06 22:57:00 |
    +-----------------------------+---------------------+
    

    例3– SYSDATETIME()からdatetimeoffsetデータ型への変換

    この例では、日付を datetimeoffsetに変換します データ型。

    SELECT 
        SYSDATETIME() AS Original,
        CONVERT(datetimeoffset, SYSDATETIME()) AS Converted;

    結果:

    +-----------------------------+------------------------------------+
    | Original                    | Converted                          |
    |-----------------------------+------------------------------------|
    | 2018-06-07 09:17:15.2410693 | 2018-06-07 09:17:15.2410693 +00:00 |
    +-----------------------------+------------------------------------+
    

    例4– SYSDATETIME()からtimeデータ型に変換

    値の日付コンポーネントを表示することに限定されません。 時間に変換することもできます データ型。時間コンポーネントのみが返されます。このように:

    SELECT 
        SYSDATETIME() AS Original,
        CONVERT(time, SYSDATETIME()) AS Converted;

    結果:

    +-----------------------------+------------------+
    | Original                    | Converted        |
    |-----------------------------+------------------|
    | 2018-06-06 23:01:41.7070775 | 23:01:41.7070775 |
    +-----------------------------+------------------+
    

    例5– SYSDATETIMEOFFSET()から変換

    前の例はすべて同じ組み込み関数を使用して日付/時刻の値を生成しますが、もちろん、この1つの関数で生成する必要はありません。 SYSDATETIMEOFFSET()を使用した例を次に示します。 :

    SELECT 
        SYSDATETIMEOFFSET() AS Original,
        CONVERT(date, SYSDATETIMEOFFSET()) AS Converted;

    結果:

    +------------------------------------+----------------------+
    | Original                           | Converted            |
    |------------------------------------+----------------------|
    | 2018-06-07 09:12:27.3660685 +10:00 | 2018-06-07           |
    +------------------------------------+----------------------+
    

    例6–データベースクエリから変換

    WideWorldImportersサンプルデータベースの列から取得した日付を変換する例を次に示します。

    USE WideWorldImporters;
    SELECT DISTINCT TOP 10 
        LastEditedWhen, 
        CONVERT(date, LastEditedWhen) AS 'Converted'
    FROM Sales.CustomerTransactions;

    結果:

    +-----------------------------+-------------+
    | LastEditedWhen              | Converted   |
    |-----------------------------+-------------|
    | 2013-01-02 11:30:00.0000000 | 2013-01-02  |
    | 2013-01-03 11:30:00.0000000 | 2013-01-03  |
    | 2013-01-04 11:30:00.0000000 | 2013-01-04  |
    | 2013-01-05 11:30:00.0000000 | 2013-01-05  |
    | 2013-01-06 11:30:00.0000000 | 2013-01-06  |
    | 2013-01-08 11:30:00.0000000 | 2013-01-08  |
    | 2013-01-09 11:30:00.0000000 | 2013-01-09  |
    | 2013-01-10 11:30:00.0000000 | 2013-01-10  |
    | 2013-01-11 11:30:00.0000000 | 2013-01-11  |
    | 2013-01-12 11:30:00.0000000 | 2013-01-12  |
    +-----------------------------+-------------+
    

    2つの異なる日付形式の間で変換するだけに限定されないことに注意してください。たとえば、日付を文字列として保存している場合は、 CONVERT()を使用することもできます。 文字列から日付、および変換する必要のあるその他のデータ型に変換します。

    CAST()を使用して日付形式を変換する方法を示す投稿も作成しました 上記と同じ例を使用して関数を作成します。


    1. MariaDBのデータベースパフォーマンスチューニング

    2. WindowsへのOracleDatabase12cソフトウェアのインストール

    3. SQL IDシーケンスが同期しなくなるのはなぜですか(特にPostgresを使用)?

    4. SQLインデックスの概要