SQL Server 2005: Converter SmallDeTime em Varchar se comporta de maneira diferente na visão e consulta 'normal'

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

  •  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:

Screenshot of result from query

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)

Foi útil?

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 ()

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top