插入DateTime到Date列时,MS SQL没有警告

时间:2016-10-13 06:57:59

标签: sql-server sql-server-2016

create table t1 (d date not null)
insert into t2 (d) values ('1988-02-01 14:23:30'); // inserting whole dateTime, no warning or error
select * from [Test].[dbo].[t1] // 1988-02-01

如果我们要将整个日期时间插入日期列,我可以在哪里设置ms sql server会抛出错误。我注意到了这一点,因为C#将ms sql datedatetime转换为c#datetime

2 个答案:

答案 0 :(得分:2)

DATEDATETIME非常密切相关。我没有检查,INSTEAD OF TRIGGER可以提供帮助,但我对此表示怀疑。

我建议您将字段设为DATETIME并添加CHECK CONSTRAINT

CREATE TABLE dummy(d DATETIME CONSTRAINT CK_dummy_d CHECK(d=CAST(d AS DATE)));
--This works
INSERT INTO dummy VALUES({d'2016-10-13'});
SELECT * FROM dummy;

--This runs against the check constraint
INSERT INTO dummy VALUES(GETDATE());
SELECT * FROM dummy;
GO

DROP TABLE dummy;

答案 1 :(得分:0)

将格式日期更改为日期时间,因为您的插入日期为时间

 create table t1 (d datetime not null)
 insert into t1 (d) values ('1988-02-01 14:23:30'); 
 select * from [Test].[dbo].[t1] // 1988-02-01