T-SQL 将 varchar 转换为 int 失败
T-SQL failed converting varchar to 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.
有什么想法吗?
括号混淆:
select Name, Surname, Days, getdate(),
CONVERT(VARCHAR(11),DATEADD(s,CONVERT(INT, days), getdate()),101)
from myTAble
首先,您的括号不正确,但这不太可能是这里的问题。
我创建了一个可验证的示例:
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
我设法重现了你的问题(有点)
Conversion failed when converting the varchar value '²°' to data type
int.
这里的问题是你得到的 20
不是正确的字符,也许你遇到了 排序问题 。
在上面的例子中,我使用了我以前得到的一个真实问题。在应用程序中显示 20
但实际上在数据库中我们得到了非标准字符。
在下面的示例中,一些特殊字符可能看起来像数字字符
--° #176 ~ 0 --¹ #185 ~ 1 --² #178 ~ 2 --³ #179 ~ 3
select char(178) + char(176)
您可以尝试检查数据是否为数字
select *, isnumeric([Days]) from MyTable
在我的例子中,我们清理了数据。
我需要添加日期
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.
有什么想法吗?
括号混淆:
select Name, Surname, Days, getdate(),
CONVERT(VARCHAR(11),DATEADD(s,CONVERT(INT, days), getdate()),101)
from myTAble
首先,您的括号不正确,但这不太可能是这里的问题。 我创建了一个可验证的示例:
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
我设法重现了你的问题(有点)
Conversion failed when converting the varchar value '²°' to data type int.
这里的问题是你得到的 20
不是正确的字符,也许你遇到了 排序问题 。
在上面的例子中,我使用了我以前得到的一个真实问题。在应用程序中显示 20
但实际上在数据库中我们得到了非标准字符。
在下面的示例中,一些特殊字符可能看起来像数字字符
--° #176 ~ 0 --¹ #185 ~ 1 --² #178 ~ 2 --³ #179 ~ 3
select char(178) + char(176)
您可以尝试检查数据是否为数字
select *, isnumeric([Days]) from MyTable
在我的例子中,我们清理了数据。