2

我正在尝试将一个datetime('2013-08-30 19:05:00')值插入到 SQL Server 数据库表列(smalldatetime)中,插入后该值保持“NULL”。

我正在对其他 6 个完全相同类型的列执行此操作。这仅发生在一列上是什么?我已经三重检查了列的名称是否正确。有任何想法吗?

4

1 回答 1

7

假设情况如你所描述

CREATE TABLE T
(
S SMALLDATETIME NULL
)

INSERT INTO T 
VALUES('2013-08-30 19:05:00')

SELECT *
FROM T /*Returns NULL*/

我能想到的只有两种方法可以发生这种情况。

1) 这是一种模棱两可的日期时间格式。在错误的会话选项下,这将无法正确转换,如果您有一些其他选项OFF,它将返回NULL而不是引发错误(例如)

SET LANGUAGE Italian;
SET ansi_warnings OFF;
SET arithabort OFF; 

INSERT INTO T 
VALUES('2013-08-30 19:05:00')

SELECT *
FROM T /*NULL inserted*/

2)您可能错过了INSTEAD OF触发器中的列,或者有一个AFTER实际上将值设置回的触发器NULL

于 2013-08-30T21:35:36.710 回答