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

SQL ServerでのDATEADD()の例

    SQL Serverでは、DATEADD()を使用できます。 指定された期間を指定された日付に追加する関数。また、指定した期間を減算するために使用することもできます。

    DATEADD()を組み合わせることもできます 必要に応じて日付をフォーマットする他の機能を使用します。たとえば、「2020-10-03」を取得し、10年を追加してから、(増加した)年のコンポーネントを返すことができます。

    この記事には、デモンストレーションの例が含まれています。

    構文

    DATEADD()の構文 このようになります:

    DATEADD (datepart , number , date )
    

    datepart 増やす(または減らす)日付の一部であるnumber datepartを増やす量です by、およびdate 追加が行われる日付です。

    例1

    日付に10年を追加する基本的な例は次のとおりです。

    SELECT DATEADD(year, 10, '2020-10-03') AS 'Future Date';
    

    結果:

    +-------------------------+
    | Future Date             |
    |-------------------------|
    | 2030-10-03 00:00:00.000 |
    +-------------------------+
    

    この場合、戻り値には、日付だけでなく時間コンポーネントも含まれます。これは、結果が日時として返されるためです。 価値。このデータ型として返される理由は、dateとして文字列リテラルを指定したためです。 口論。日付として文字列リテラルを指定する場合、DATEADD() 日時を返します 値。

    文字列リテラルを指定しない場合、戻り値はdateのデータ型と同じです。 口論。たとえば、 datetime2を指定した場合 引数の場合、戻り値は datetime2になります 。

    例2–結果のフォーマット

    上記の結果を取得し、FORMAT()でフォーマットできます。 機能:

    SELECT 
        FORMAT(DATEADD(year, 10, '2020-10-03'), 'yyyy-MM-dd') AS 'yyyy-MM-dd',
        FORMAT(DATEADD(year, 10, '2020-10-03'), 'dd/MM/yyyy') AS 'dd/MM/yyyy',
        FORMAT(DATEADD(year, 10, '2020-10-03'), 'yyyy') AS 'yyyy',
        FORMAT(DATEADD(year, 10, '2020-10-03'), 'yy') AS 'yy';
    

    結果:

    +--------------+--------------+--------+------+
    | yyyy-MM-dd   | dd/MM/yyyy   | yyyy   | yy   |
    |--------------+--------------+--------+------|
    | 2030-10-03   | 03/10/2030   | 2030   | 30   |
    +--------------+--------------+--------+------+
    

    ただし、FORMAT()に注意することが重要です。 関数は結果を文字列として返します。

    もう1つのオプションは、CONVERT()を使用することです。 結果を日付に変換します データ型:

    SELECT CONVERT(date, DATEADD(year, 10, '2020-10-03')) AS Converted;
    

    結果:

    +-------------+
    | Converted   |
    |-------------|
    | 2030-10-03  |
    +-------------+
    

    または、YEAR()のような関数を使用できます 、結果を整数として返します:

    SELECT YEAR(DATEADD(year, 10, '2020-10-03')) AS 'Future Year';
    

    結果:

    +---------------+
    | Future Year   |
    |---------------|
    | 2030          |
    +---------------+
    

    例3–日付の減算

    負の数を使用して、日付から減算できます:

    SELECT DATEADD(year, -10, '2020-10-03') AS 'Earlier Date';
    

    結果:

    +-------------------------+
    | Earlier Date            |
    |-------------------------|
    | 2010-10-03 00:00:00.000 |
    +-------------------------+
    

    そしてもちろん、前述の方法のいずれかを使用してこれをフォーマットできます。

    例4–システム日付

    さまざまな関数を使用して、SQLServerのインスタンスが実行されているコンピューターから現在の日付/時刻を返す例を次に示します。

    SYSDATETIME()

    SELECT 
        SYSDATETIME() AS 'Current Date',
        DATEADD(year, 10, SYSDATETIME()) AS 'Future Date';
    

    結果:

    +-----------------------------+-----------------------------+
    | Current Date                | Future Date                 |
    |-----------------------------+-----------------------------|
    | 2018-06-04 05:57:51.7297042 | 2028-06-04 05:57:51.7297042 |
    +-----------------------------+-----------------------------+
    

    SYSDATETIMEOFFSET()

    SELECT 
        SYSDATETIME() AS 'Current Date',
        DATEADD(year, 10, SYSDATETIME()) AS 'Future Date';
    

    結果:

    +--------------------------+--------------------------+
    | Current Date             | Future Date              |
    |--------------------------+--------------------------|
    | 4/6/18 6:02:07 am +00:00 | 4/6/28 6:02:07 am +00:00 |
    +--------------------------+--------------------------+
    

    前述のように、これらの結果はdateのデータ型を使用して返されます 引数(文字列リテラルではないため)。

    出力のフォーマット

    SELECT 
        YEAR(SYSDATETIME()) AS 'Current Year',
        YEAR(DATEADD(year, 10, SYSDATETIME())) AS 'Future Year';
    

    結果:

    +----------------+---------------+
    | Current Year   | Future Year   |
    |----------------+---------------|
    | 2018           | 2028          |
    +----------------+---------------+
    

    また、前述のように、日付をフォーマットすると、該当する関数のデータ型で返されます。したがって、この例では、結果は intとして返されます。 。 FORMAT()でフォーマットした場合 関数の場合、文字列として返されます。


    1. JSONPathワイルドカードステップ(**)がMariaDBでどのように機能するか

    2. PostgreSQL11の新しいパーティショニング機能を利用する方法

    3. SQLServerでのMySQLTIMESTAMP列の操作

    4. utf8_general_ciとutf8_unicode_ciの違いは何ですか?