SQL Server 2005: la conversion smalldatetime varchar se comporte différemment en vue et requête « normale »

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

  •  21-09-2019
  •  | 
  •  

Question

J'ai vue que, fondamentalement, retourne simplement tous les enregistrements d'une table, et ajoute une colonne « ISODate » qui est censé être la date dans la norme ISO-Format.

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

La "donnée" -field est smalldatetime. Les résultats d'une requête sur Isodat étaient ... « surprenant », donc de faire le point clair, j'ai essayé ceci:

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

qui a conduit à:

Capture d

et qui semble très mal.

Je suppose que j'ai mal aux attentes ou je « abuser » ici quelque chose, mais je ne vois pas ce que je pourrais faire mal et apprécierait des suggestions comment revenir sur la bonne voie ici ...

Merci

Michael
(espérons la capture d'écran affichera correctement lors de la publication ce, aperçu ne montre pas)

Était-ce utile?

La solution

Utilisation * dans les vues est dangereux. Si la définition de table change, * peut faire le point de vue de cartographier les colonnes mal. Drop & recréer la vue sans *, et voir si cela résout le problème.

P.S. Convertir 20 est en fait ODBC canonique, yyyy-mm-dd hh:mi:ss(24h), consultez la la page MSDN .

Autres conseils

La dernière parm à convertir est le format de sortie.

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

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

voir MS SQL convertir ()

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top