SQL Server 2005: Converter SmallDeTime em Varchar se comporta de maneira diferente na visão e consulta 'normal'
-
21-09-2019 - |
Pergunta
Eu tenho uma visão que basicamente apenas retorna todos os registros de uma tabela e adiciona uma coluna 'isodate', que deveria ser a data do ISO-formato.
CREATE VIEW [dbo].[v_bedarfe]
AS
SELECT *,convert(varchar(16),datum,20) As isodat FROM bedarfe
GO
O campo "Datum" é pequeno de todos os tempos. Os resultados de uma consulta no Isodat foram ... 'surpreendentes', então para deixar o ponto claro, eu tentei o seguinte:
select top 10 datum,isodat,convert(varchar(16),datum,20) As isodat2 from v_bedarfe
o que levou a:
E isso parece muito errado.
Por isso, suponho que tenho expectativas erradas ou estou 'abusando' de algo aqui, mas não vejo o que poderia estar fazendo de errado e apreciaria qualquer sugestão de como voltar aos trilhos aqui ...
Obrigado
Michael
(Espero que a captura de tela seja exibida corretamente ao postar isso, a visualização não mostra)
Solução
Usando *
Em vista, é perigoso. Se a definição da tabela mudar, *
pode fazer com que a visualização mapeie as colunas erradas. Soltar e recriar a vista sem *
, e veja se isso corrige o problema.
PS Convert 20 é na verdade ODBC Canonical, yyyy-mm-dd hh:mi:ss(24h)
, Veja o Página msdn.
Outras dicas
O último parM no convertido é o formato de saída.
20 => aaaaa-mm-dd hh: mi: ss (24h)
131 => dd/mm/yy hh: mi: ss: mmmam
Vejo MS SQL Convert ()