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 date
或datetime
转换为c#datetime
。
答案 0 :(得分:2)
DATE
和DATETIME
非常密切相关。我没有检查,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