我正在尝试将datetime('2013-08-30 19:05:00')
值插入SQL Server数据库表列(smalldatetime),并且插入后值保持为“NULL”。
我正在对其他6个完全相同的列进行此操作。这只在一列上发生了什么?我已经三次检查列的名称是否正确。有什么想法吗?
答案 0 :(得分: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
。