SQL Server 2005: convertir a smalldatetime se comporta de manera diferente varchar a la vista y consulta 'normal'

StackOverflow https://stackoverflow.com/questions/1969132

  •  21-09-2019
  •  | 
  •  

Pregunta

Tengo una opinión de que, básicamente, sólo devuelve todos los registros de una tabla, y añade una columna 'isodate' que se supone que es la fecha en la norma ISO-formato.

CREATE VIEW [dbo].[v_bedarfe]
AS 
   SELECT *,convert(varchar(16),datum,20) As isodat FROM bedarfe
GO

El -field "dato" es smalldatetime. Los resultados de una consulta en isodat se ... 'sorprendente', por lo que a aclarar este punto, he intentado esto:

select top 10 datum,isodat,convert(varchar(16),datum,20) As isodat2 from v_bedarfe

que dio lugar a:

pantalla del resultado de la consulta

y que se ve muy mal.

Así que supongo que tengo expectativas equivocadas o que abusan de la mañana '' algo aquí, pero no veo qué podría estar haciendo mal y agradecería cualquier sugerencia de cómo volver a la pista aquí ...

Gracias

Michael
(espero que la pantalla se mostrará correctamente al publicar esto, vista previa no lo demuestra)

¿Fue útil?

Solución

El uso de * en las vistas es peligroso. Si los cambios en la definición de mesa, * puede hacer que el fin de mapear el mal columnas. Gota y recrear la vista sin *, y ver si se soluciona el problema.

P.S. Convertir 20 es en realidad ODBC canónica, yyyy-mm-dd hh:mi:ss(24h), ver la href="http://msdn.microsoft.com/en-us/library/aa226054(SQL.80).aspx" rel="nofollow noreferrer"> página .

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