首先你parentesis是不正確的,但在這裏,這不是容易的問題。 我創建了一個可覈查的例子:
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
現在你的查詢(用正確parentesis)
select Name, Surname, Days, getdate(),
CONVERT(VARCHAR(11),DATEADD(s,CONVERT(INT, Days), getdate()),101)
from myTAble
,我設法重現您的問題(有點)轉換時
轉換失敗varchar值'2'到數據類型 int。
這裏的問題是你有一個20
不正確CARACTERES,也許你有整理問題。
在上面的例子中,我使用了一個我以前遇到的實際問題。在應用程序顯示20
,但在數據庫中的實際上,我們得到了非標準的caracteres。
在下面的一些特殊caractres的例子可以像數字的人
--° #176 ~ 0 --¹ #185 ~ 1 --² #178 ~ 2 --³ #179 ~ 3
select char(178) + char(176)
你可以嘗試檢查,如果數據是數字
select *, isnumeric([Days]) from MyTable
在我的情況下,我們消毒的數據。
這是SQL Server嗎? –
是的,它適用於SQL – dev
您可以創建*可重現的*範例嗎?顯然,選擇convert(int,'20')'會按預期工作,沒有這樣的錯誤。因此,問題出在您的數據中 - 或者您提供的錯誤信息不完全相關......您是否完全複製粘貼了它?在你的數據中是否有可能是'2O'(capiltal字母O)而不是'20'? –