SQL Server 2005: la conversione smalldatetime a varchar comporta in modo diverso in vista e query 'normale'
-
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:
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)
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