d'abord votre PARENTESIS sont incorrectes, mais c'est peu probable que la question ici. J'ai créé un exemple vérifiable:
create table MyTable
(
Name varchar(100)
,Surname varchar(100)
,[Days] varchar(100)
)
GO
insert into MyTable(Name,Surname,[Days])
values ('John', 'Doo', '20')
,('Stack', 'Overflow', char(178) + char(176))
GO
Et maintenant votre requête (avec PARENTESIS correcte)
select Name, Surname, Days, getdate(),
CONVERT(VARCHAR(11),DATEADD(s,CONVERT(INT, Days), getdate()),101)
from myTAble
et j'ai réussi à reproduire votre problème (un peu)
Échec de la conversion la valeur varchar '² °' au type de données int.
La question ici est que vous avez un 20
est pas les caracteres correctes, peut-être vous avez un problème de classement .
Dans l'exemple ci-dessus, j'ai utilisé un problème réel que j'ai rencontré il y a un certain temps. Dans l'application est montre 20
mais en reallity dans la base de données, nous avons obtenu des caractères non standart.
Dans l'exemple ci-dessous quelques caractres spéciaux peuvent ressembler à ceux numériques
--° #176 ~ 0 --¹ #185 ~ 1 --² #178 ~ 2 --³ #179 ~ 3
select char(178) + char(176)
Vous pouvez essayer de vérifier si les données est numérique
select *, isnumeric([Days]) from MyTable
Dans mon cas, nous aseptisée les données.
Est-ce pour SQL Server? –
Oui, c'est pour SQL – dev
Pouvez-vous créer un exemple * reproductible? Evidemment, 'select convert (int, '20')' fonctionnera comme prévu sans une telle erreur. Le problème est donc quelque part dans vos données - ou peut-être que le message d'erreur que vous avez fourni n'est pas entièrement pertinent ... Avez-vous copié-collé exactement? Y a-t-il une chance que ce soit vraiment «2O» (lettre capiltale O) au lieu de «20» dans vos données? –