将datetime值插入sql server表列

时间:2013-08-30 21:07:39

标签: sql-server-2008

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

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

1 个答案:

答案 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