SQL Server 2008 R2でインデックス付きビューとグループの作成に関する問題
-
08-10-2019 - |
質問
このようなT-SQLを使用してインデックスビューを作成したい:
Select
Table1_ID,
cast(CONVERT(varchar(8),
t2.Object_CreationDate, 112)AS DateTime) as Object_CreationDate ,
Count_BIG(*) as ObjectTotalCount
from
[dbo].Table2 t2 inner join [dbo].Table1 t1 on ...
Group BY
Table1_ID, CONVERT(varchar(8), t2.Object_CreationDate, 112))
作る必要があります グループby のみによって datepart 列の Object_CreationDate
(タイプ DateTime2 ).
また、列にインデックスを設定したいと思います Theme_Id
と Object_CreationDate
派生ビューで。
使用する場合 cast(CONVERT(varchar(8), m.Mention_CreationDate, 112)AS DateTime)
選択 - この列のインデックスの問題が発生します。この列のため(Object_CreationDate
)決定論的ではありません。
問題を解決することができるのだろうか。
解決
交換 ...
CONVERT(varchar(8), t2.Object_CreationDate, 112))
... と
DATEADD(day, DATEDIFF(day, 0, t2.Object_CreationDate), 0)
--OR
CAST(t2.Object_CreationDate AS date)
2番目の形式はSQL Server 2008+のみで、1つ目はより一般的です
これにより、中間ロケールに依存するDateTimeフォーマットなしで、日付/DateTime DateTypeドメインのDateTime値から時間コンポーネントが削除されます
所属していません StackOverflow