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()
を使用してください 理由がない限り。