SQL Server 2005: la conversione smalldatetime a varchar comporta in modo diverso in vista e query 'normale'

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

  •  21-09-2019
  •  | 
  •  

Domanda

Ho una visione che fondamentalmente solo restituisce tutti i record da una tabella, e aggiunge una colonna 'isodate' che dovrebbe essere la data in ISO-Format.

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

Il -field "dato" è smalldatetime. I risultati di una query su isodat erano ... 'sorprendente', in modo da rendere il punto chiaro, ho provato questo:

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

che ha portato a:

Schermata di conseguenza da query

e che sembra molto sbagliato.

Quindi presumo che ho aspettative sbagliate o sto 'abusare' qualcosa qui, ma non vedo che cosa potrei fare male e gradirebbe qualche suggerimento su come tornare in pista qui ...

Grazie

Michael
(spero lo screenshot verrà visualizzato correttamente quando questo distacco, anteprima non vederlo)

È stato utile?

Soluzione

Utilizzando * in vista è pericoloso. Se le modifiche di definizione tavolo, * può causare la visualizzazione di mappare le colonne sbagliato. Drop & ricreare la vista, senza *, e vedere se questo risolve il problema.

P.S. Convert 20 è in realtà ODBC canonica, yyyy-mm-dd hh:mi:ss(24h), vedere la pagina MSDN .

Altri suggerimenti

L'ultima parm nel convertire il formato di output.

20 => aaaa-mm-gg hh: mi: ss (24h)

131 => gg / mm / aa hh: mi: ss: mmmAM

MS SQL convertire ()

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top