无法将数据添加到datetime2字段

时间:2013-02-14 17:45:04

标签: sql-server sql-server-2008

我正在使用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
);

1 个答案:

答案 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)值完全无关。