2017-02-03 86 views
0

我需要添加天約會T-SQL未能轉化爲varchar到int

select Name, Surname, Days, getdate(), 
CONVERT(VARCHAR(11),DATEADD(s,CONVERT(INT, Days)), getdate()),101) 
from myTAble 

,但我得到的錯誤

Conversion failed when converting the varchar value '20' to data type int. 

什麼想法?

+0

這是SQL Server嗎? –

+0

是的,它適用於SQL – dev

+1

您可以創建*可重現的*範例嗎?顯然,選擇convert(int,'20')'會按預期工作,沒有這樣的錯誤。因此,問題出在您的數據中 - 或者您提供的錯誤信息不完全相關......您是否完全複製粘貼了它?在你的數據中是否有可能是'2O'(capiltal字母O)而不是'20'? –

回答

4

支架混合起來:

select Name, Surname, Days, getdate(), 
CONVERT(VARCHAR(11),DATEADD(s,CONVERT(INT, days), getdate()),101) 
from myTAble 
0

首先你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 

在我的情況下,我們消毒的數據。