0

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
);
4

1 に答える 1

1

挿入しようとしているテーブルをよく見てください。char / varchar / nchar/nvarchar列に挿入しようとしている値の1つが長すぎるに違いありません。

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次に、このリストを句にあるリテラルと比較します。コメントで提案したように、これらの1つには、表で許可されているよりも多くの文字が含まれているに違いありません。

バイナリ列またはvarbinary列がある可能性があり、問題はありますが、これは単純な「文字列が長すぎる」問題であり、値とはまったく関係がないことを強く疑っていますDATETIME2(7)

于 2013-02-14T18:02:02.003 に答える