回答:
そこには実際の違いはありませんが、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(?)バージョンより前に存在した日付時刻型)。それは少し厄介です。