Domanda

Voglio creare vista indicizzata con tale 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))

Ho bisogno di fare di gruppo da solo datepart di colonna Object_CreationDate (tipo datetime2 ).

Anche io voglio indice impostato su colonne Theme_Id E Object_CreationDate nella vista derivata.
Se uso cast(CONVERT(varchar(8), m.Mention_CreationDate, 112)AS DateTime) in SELEZIONATE - Prendo problemi con indice su questa colonna. Perché questa colonna (Object_CreationDate) non è deterministico.

Mi chiedo se è possibile risolvere un problema.

È stato utile?

Soluzione

sostituire ...

CONVERT(varchar(8), t2.Object_CreationDate, 112))

... con

DATEADD(day, DATEDIFF(day, 0, t2.Object_CreationDate), 0)
--OR
CAST(t2.Object_CreationDate AS date)

Il secondo formato è SQL Server 2008+ solo, il primo è più generale

Ciò elimina la componente di tempo da un valore datetime in data / datetime dominio tipo di dati senza alcuna formati datetime dipendenti di locale intermedio

Vedere queste risposte: Un e < a href = "https://stackoverflow.com/questions/1138142/best-way-to-convert-and-validate-a-date-string"> Due (commenti)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top