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

SQL ServerのSYSDATETIME()とGETDATE():違いは何ですか?

    SQL Serverには、現在の日付/時刻を返す一連の関数があります。これらのうちの2つは、GETDATE()です。 およびSYSDATETIME() 機能。

    一見すると、これら2つの関数は同じことをしているように見えます。つまり、SQLServerのインスタンスが実行されているコンピューターのオペレーティングシステムから現在の日付と時刻を取得します。

    ただし、この2つには微妙な違いがあります。

    違いは?戻り値のタイプ

    GETDATE()の主な違い およびSYSDATETIME() は戻り値タイプです。

    • GETDATE() 日時を返します 値。
    • SYSDATETIME() datetime2(7)を返します 値。

    これは、SYSDATETIME() GETDATE()よりも秒の精度が高い 。

    どちらの関数も、SQL Serverのインスタンスが実行されているコンピューターのオペレーティングシステムから現在の日付と時刻を取得しますが、分数の精度は異なります。

    関数ごとに返されるさまざまな値を示す例を次に示します。

    SELECT 
        GETDATE() AS GETDATE,
        SYSDATETIME() AS SYSDATETIME;

    結果:

    +-------------------------+-----------------------------+
    | GETDATE                 | SYSDATETIME                 |
    |-------------------------+-----------------------------|
    | 2018-06-13 02:48:27.653 | 2018-06-13 02:48:27.6542371 |
    +-------------------------+-----------------------------+
    

    前述のように、SYSDATETIME() datetime2(7)を返します 値は、GETDATE()よりも部分的な精度が高くなります 、日時を返します 値。

    datetime2 データ型には、より広い日付範囲とオプションのユーザー指定の精度もあります。

    どちらを使用すればよいですか?

    datetime2を使用することをお勧めします 日付/時刻の値を使用します。このデータ型はSQL標準に準拠しており、 datetimeよりも移植性があります。 。

    したがって、SYSDATETIME()を使用してください 理由がない限り。


    1. データベーススナップショットのパフォーマンスを見る

    2. SQLステートメントのフィールドから先行ゼロを削除する

    3. Oracleクライアントとネットワークコンポーネントが見つかりませんでした

    4. SQL Server:クエリを使用して列のデフォルト値を確認する