0
votes

Format de la date de changement SQL

SEP-19 (mois-année) - Varchar

chaîne et ce que je dois faire est de changer cela à:

30 septembre 2019 (jour de mois (dernier jour du mois), année) Varchar

Je travaille avec SQL Server 2014.

Toute suggestion?


0 commentaires

3 Réponses :


2
votes

Cela devrait fonctionner:

select eomonth(cast('01-' + month_year as date))


2 commentaires

Manquant un - , puisque '01 '+ mois_year entraîne la valeur 01SeP-19 , et cela donne une erreur Échec de la conversion lors de la conversion et / ou le temps de la chaîne de caractères. --- avec le tableau de bord, le résultat est 2019-09-30


Ah oui, ajouter '01 - ' au lieu de "01" fonctionnera (mais encore seulement si la langue est l'anglais).



2
votes

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 ( jj mmm ) 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: xxx

Je ne suis vraiment pas un gros fan de Eomezth () 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: xxx


1 commentaires

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



1
votes

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


0 commentaires