SEP-19 (mois-année) - Varchar P>
chaîne et ce que je dois faire est de changer cela à: p>
30 septembre 2019 (jour de mois (dernier jour du mois), année) Varchar P>
Je travaille avec SQL Server 2014. P>
Toute suggestion? P>
3 Réponses :
Cela devrait fonctionner:
select eomonth(cast('01-' + month_year as date))
Manquant un - code>, puisque '01 '+ mois_year code> entraîne la valeur 01SeP-19 code>, et cela donne une erreur Échec de la conversion lors de la conversion et / ou le temps de la chaîne de caractères. code> --- avec le tableau de bord, le résultat est 2019-09-30 code>
Ah oui, ajouter '01 - ' code> au lieu de "01" fonctionnera (mais encore seulement si la langue est l'anglais).
Vraiment, vous ne devriez pas stocker ou accepter des dates dans ce format.
Mais étant donné que vous êtes déjà, et sans aucun doute de la réponse, vous ne pouvez pas le réparer, vous pouvez utiliser style 6 ( Je ne suis vraiment pas un gros fan de jj mmm code>) et une manipulation de chaîne pour revenir ce format à une date appropriée. Mais vous devez vous assurer que vos paramètres de langue correspondent à la manière dont les données sont stockées: p> Eomezth () Code > Comme il s'agit de la seule application utile. Dans mon propre code, j'utiliserais probablement quelque chose comme ça, même s'il est plus verbeux: p>
Je sais que je ne devrais que la réalité, c'est que les fichiers Excel que je reçoivent de différentes zones de la société ont un format de date multiple
Il y a déjà assez de bonnes réponses, mais j'aimerais ajouter le mien quand même:
declare @input as nvarchar(100) = 'Sep-19' select FORMAT(EOMONTH(PARSE(LEFT(@input, 3) + '-01-' + RIGHT(@input, 2) as datetime using 'En-Us')), 'MMMM dd, yyyy')