2016-10-13 2 views
1
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 

Где можно установить, что сервер sqs sqs будет выдавать ошибку, если мы вставим целое столбец datetime в дату. Я заметил это, потому что C# переводит ms sql date или datetime в C# datetime.MS SQL no warning при вставке DateTime в столбец Date

+0

SQL сервер беззвучно обрезает даты-времени значения в даты. В этом случае я не знаю, как вызвать ошибку. – cco

ответ

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; 
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 
+0

Да, это было бы решением, но в настоящее время я не отвечаю (имеет право) менять схему базы данных. – broadband