我想用这样的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))

我需要做 通过...分组 只有通过 datePartObject_CreationDate (类型 datetime2 ).

我也想在列上设置索引 Theme_IdObject_CreationDate 在派生的视图中。
如果我使用 cast(CONVERT(varchar(8), m.Mention_CreationDate, 112)AS DateTime) 在SELECT中 - 我将在此列上遇到索引问题。因为此列(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)

第二个格式仅是SQL Server 2008+,第一个是更通用的

这将在日期/dateTime数据类型域中从DateTime值中删除时间组件

看到以下答案: 两个(评论)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top