将数据类型varchar转换为数字时出错-但具有数字值

时间:2019-01-03 18:23:48

标签: sql sql-server tsql

我在SQL Server 2014中具有下表:

effDate  DATETIME(23) NOT NULL  
rateType CHAR(2) NOT NULL  
rate     DECIMAL(10, 8) NOT NULL  

运行以下查询时,收到错误消息:

  

选择失败:8114将数据类型varchar转换为数字时出错。

我的查询:

insert into hprs.dbo.OHPRSrates 
values ('01/01/2019', 'D', 0.02642000)

为什么?该行中唯一的数字列是rate,插入值显然是数字

2 个答案:

答案 0 :(得分:6)

怀疑这些列的排列顺序与您认为的顺序不符。插入时,应确实声明要插入的列。这有什么用吗?

INSERT INTO hprs.dbo.OHPRSrates (effDate,rateType,rate)
VALUES ('01/01/2019','D',0.02642000);

但是,我也建议使用明确的日期格式,例如yyyyMMdd。因此,对于您的日期,'20190101'01/01/2019的值是1月1日,无论您以哪种方式读取它,但是01/02/2019是1月2日还是2月1日?答案取决于您的语言(设置)。

答案 1 :(得分:1)

尝试

insert into hprs.dbo.OHPRSrates 
(effDate, rateType, rate) values ('01/01/2019','D',0.02642000)