9

datetime値から日付部分を抽出するこの非常に便利な方法を使用しています。

select dateadd(day, datediff(day, 0, @inDate), 0)

これは基本的に、日付の時刻部分をゼロにします。高速であり、さらに重要なのは決定論的です。この式は、永続化された計算列、インデックス付きビューなどで使用できます。

しかし、私はそのタイプで動作するものを考え出すのに苦労していdatetime2ます。問題は、SQL Server が整数から型への変換を許可しないことdatetime2です。

から時間部分を取り除く同等の決定論datetime2的な方法はありますか?

4

1 に答える 1

14

できませんか?

ALTER TABLE dbo.YourTable
ADD DateOnly AS CAST(YourDate AS DATE) PERSISTED

CAST(... AS DATE)、datetime2 列を「日付のみ」に変換し、永続化された計算列定義で使用するのに十分決定的であるように見えます...

于 2012-12-08T12:21:19.277 に答える