T-SQL无法将varchar转换为int

时间:2017-02-03 11:15:43

标签: sql sql-server tsql int varchar

我需要添加日期

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.

任何想法?

2 个答案:

答案 0 :(得分:4)

括号混乱:

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

答案 1 :(得分:0)

首先你的胃肠道检查是不正确的,但这不是问题。 我创建了一个可验证的例子:

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

现在你的查询(正确的治疗)

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

我设法重现你的问题(有点)

  

将varchar值'²°'转换为数据类型时转换失败   中间体

这里的问题是你有一个20不正确的caracteres,也许你有一个整理问题

在上面的例子中,我使用了一段时间前的真正问题。在应用程序中显示20,但在数据库中我们得到了非标准的caracteres。

在下面的例子中,一些特殊的caractres看起来像数字的

--° #176 ~ 0   --¹ #185 ~ 1   --² #178 ~ 2   --³ #179 ~ 3    
select char(178) + char(176)

您可以尝试检查数据是否为数字

select *, isnumeric([Days]) from MyTable

在我的情况下,我们对数据进行了清理。