SQL Server 2005: convertir a smalldatetime se comporta de manera diferente varchar a la vista y consulta 'normal'
-
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:
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)
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 .
Otros consejos
La última Parm en el converso es el formato de salida.
hh 20 => aaaa-mm-dd: mi: ss (24h)
131 => dd / mm / hh yy: MI: ss: mmmAM
ver MS SQL ()