Pregunta

Quiero crear vista indizada con tal de 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))

Necesito hacer grupo por sólo datepart de Object_CreationDate columna (tipo datetime2 ).

También quiero índice de conjuntos de columnas Theme_Id Y Object_CreationDate en la vista derivada.
Si uso cast(CONVERT(varchar(8), m.Mention_CreationDate, 112)AS DateTime) en SELECT - Voy a problemas con el índice en esta columna. Debido a esta columna (Object_CreationDate) no es determinista.

Me pregunto si es posible resolver un problema.

¿Fue útil?

Solución

reemplazar ...

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

... con

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

El segundo formato es SQL Server 2008+ solamente, el primero es más general

Esto elimina el componente de tiempo de un valor de fecha y hora en la fecha / fecha y hora dominio tipo de datos sin ningún tipo de formatos de fecha y hora dependientes de localización intermedia

Consulte estas respuestas: Una y < a href = "https://stackoverflow.com/questions/1138142/best-way-to-convert-and-validate-a-date-string"> dos (comentarios)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top