回答:
そこには実際の違いはありませんが、DATETIME2
値、またはDATETIME2
値を返す関数の使用を開始すると、エラーが発生します。
SELECT SYSDATETIME() - 1 AS [Incompatible]
メッセージ206、レベル16、状態2、行17オペランドタイプの衝突:datetime2はintと互換性がありません
これらについては、日付の数学関数を使用する必要があります。
SELECT DATEADD(DAY, -1, SYSDATETIME()) AS [Compatible]
アーロン・バートランドはこの問題について彼のバッド・ハビッツ・トゥ・キック・シリーズで簡単に述べています。
他の回答の1つにある主張とは異なり、どちらのオプションもSQL Serverによって正式にサポートおよび文書化されています。datetime - number
これは未定義の動作ではありません。
の大きな利点
DATEADD(d, -2, GETUTCDATE())
それは自己文書化されているという事実です:その目的はすぐに明らかです。
GETUTCDATE() - 2
一方、datetime - number
操作の定義を知っている読者に依存しています。はい、現在は慣用的なT-SQLである可能性がありますが、これがサポートされなくなったという事実はdatetime2
、将来の世代のSQL Server開発者がこれに慣れていない可能性があることを意味します。
date
追加された2008(?)バージョンより前に存在した日付時刻型)。それは少し厄介です。