【问题标题】:Bulk insert issue with date from excel into SQL Table将日期从 excel 批量插入 SQL 表的问题
【发布时间】:2016-09-06 09:44:30
【问题描述】:

我正在尝试将这两列从 excel 批量插入临时表 ##NBP_Table。但是,当我这样做时,会出现以下错误:

'操作数类型冲突:int 与日期不兼容'

这是否意味着日期不是应插入表格的格式?

create table ##NBP_Table
(
Applicable_Date date,
NBP_Value numeric(4,4)
)

insert into ##NBP_Table
values (01/04/2014,1.7107),
(02/04/2014,1.6482),
(03/04/2014,1.686),
(04/04/2014,1.6681)

【问题讨论】:

  • 您可以将日期转换为 CAST('01/04/2014' AS DATETIME)
  • NUMERIC(4,4) 表示:总共 4 位,其中 4 小数点后 - 所以你可以仅在此列中存储从 .0000.9999 的值 - 这真的是您想要的吗?如果要小数点前4位和小数点后4位,则需要改用NUMERIC(8,4)
  • 是的,你需要投射日期。

标签: sql sql-server


【解决方案1】:

要让日期插入正常工作,请试试这个

create table ##NBP_Table
(
Applicable_Date date
NBP_Value numeric(5,4)
)

insert into ##NBP_Table
values ('01/04/2014',1.7107)

日期需要用引号引起来

我还为您更正了数值数据类型

【讨论】:

  • 数字一定要大于小数吗?如果是这样,这背后的原因是什么?
  • 第一个数字可以看成构成整个数字的总位数,第二个数字可以看成小数点。所以你总共有 5 位数字,其中 4 位在小数点后
【解决方案2】:

表达式中的这个日期被认为是 int 所以它将被执行/操作, 所以请使用“开始日期之前”和“结束日期之后”。 '01-04-2014'

Create table #NBP_Table
(
Applicable_Date date,
NBP_Value numeric(5,4)
)

insert into #NBP_Table
values ('01-04-2014',1.7107),
('02-04-2014',1.6482),
('03-04-2014',1.686),
('04-04-2014',1.6681)

【讨论】:

  • 它得到“将数字转换为数据类型数字的算术溢出错误。”当我运行它时,有什么原因吗?
  • 是的,我已经在我的回答中更正了这一点,您需要对传入的数据使用数字 (5,4)
  • 是否适用于小数精度必须小于之前的实际数字的任何数字或浮点类型?
  • 对我的回答的评论应该为你解释这一点
  • 我无法按照您的方式工作,但是当我将日期替换为“2014-04-01”时,我设法复制它而没有转换问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-09
  • 1970-01-01
  • 1970-01-01
  • 2011-11-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多