我正在使用SQL Server Express 2008,我试图将数据添加到数据类型为datetime2(7)的表中的字段。
这就是我想添加的内容:
'2012-02-02 12:32:10.1234'
但我收到了错误
Msg 8152, Level 16, State 4, Line 1
String or binary data would be truncated.
The statement has been terminated.
这是否意味着它被添加到现场太长了?应该减少升技?如果是这样 - 你能举例说明它应该是什么样的吗?
注意 - 我也尝试过这种格式:
'01/01/98 23:59:59.999'
由于
**编辑
实际陈述:
INSERT INTO dbo.myTable
(
nbr,
id,
name,
dsc,
start_date,
end_date,
last_date,
condition,
condtion_dsc,
crte_dte,
someting,
activation_date,
denial_date,
another_date,
a_name,
prior_auth_start_date,
prior_auth_end_date,
history_cmnt,
cmnt,
source,
program,
[IC-code],
[IC-description],
another_start_date,
another_start_date,
ver_nbr,
created_by,
creation_date,
updated_by,
updated_date)
VALUES
(
26,
'a',
'sometinh',
'c',
01/01/98 23:59:59.999,
01/01/98 23:59:59.999,
01/01/98 23:59:59.999,
'as',
'asdf',
01/01/98 23:59:59.999,
'lkop',
01/01/98 23:59:59.999,
01/01/98 23:59:59.999,
01/01/98 23:59:59.999,
'a',
01/01/98 23:59:59.999,
01/01/98 23:59:59.999,
'b',
'c',
'd',
'b',
'c',
'd',
01/01/98 23:59:59.999,
01/01/98 23:59:59.999,
423,
'Monkeys',
01/01/98 23:59:59.999,
'Goats',
01/01/98 23:59:59.999
);
答案 0 :(得分:1)
仔细查看您要插入的表格。我敢打赌,您尝试插入char / varchar / nchar / nvarchar列的其中一个值太长。
SELECT
name,
max_length / CASE WHEN system_type_id IN (231, 239)
THEN 2 ELSE 1 END
FROM sys.columns
WHERE [object_id] = OBJECT_ID('dbo.TargetTableName')
AND system_type_id IN (167, 175, 231, 239);
这将为您提供如下列表:
name
-------- --------
col1 32
col5 64
col7 12
现在,将此列表与您在VALUES
子句中的文字进行比较。正如我在评论中所建议的那样,我打赌其中一个字符比表允许的字符多。
有可能存在二进制或varbinary列,问题就在那里,但我强烈怀疑这是一个简单的"字符串太长"问题 - 并且与您的DATETIME2(7)
值完全无关。