Pregunta

Tengo un campo datetime en una tabla llamada dbo.Traffic

Estoy tratando de agregar datos de tráfico por día.Estoy planeando en la creación de un enlazada por esquema de la vista y la adición de un índice.

CREATE VIEW [dbo].[vwTraffic] WITH SCHEMABINDING AS

SELECT  CONVERT(date, CreateDate) as CreateDate, Circuit, Fuseaction,     
   COUNT(CreateDate) AS activity
FROM    dbo.Traffic WITH (NOLOCK)
GROUP BY CONVERT(date, CreateDate), Circuit, Fuseaction

En la tabla base, CreateDate no acepta valores null.Sin embargo, tan pronto como puedo crear una vista y convertir una fecha, resulta que aceptan valores null.

enter image description here

¿Fue útil?

Solución

Esto es debido a cómo las columnas calculadas se comportan en términos de la aceptación de valores null.Compruebe en aquí en MSDN:

El Motor de Base de datos automáticamente determina la capacidad de las columnas calculadas basadas en las expresiones que utiliza.El resultado de la mayoría de las expresiones que se considera que acepta valores null incluso si sólo no los aceptan las columnas están presentes, ya que los posibles underflows o desbordamientos que se producen nulos resultados.Utilice la función COLUMNPROPERTY con la propiedad AllowsNull para investigar la capacidad de cualquier computada de columna en una tabla. Una expresión que acepta valores null se puede convertir en una no los aceptan un especificando ISNULL(check_expression, constante), donde la constante es un valor distinto de null sustituido por cualquier resultado null.

Usted puede usar eso como su CreateDate.Usted no tiene que preocuparse por el valor constante como usted debe nunca tener NULL:

ISNULL(CONVERT(date, CreateDate),0) as CreateDate
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top