2016-03-19 10 views
0

Ниже приведено описание DDL для таблицы, которую я хочу создать. Тем не менее, я хочу, чтобы атрибут «Appointment_datetime» был будущей датой и в рабочее время (с 8:00 до 17:00). Я могу получить часть будущей даты с помощью -'CHECK (Appointment_datetime> = GETDATE()) Но как мне получить между 8AM и 5PM ontop этого ограничения?SQL DDL - 2 CHECK Ограничения по 1 Атрибут

CREATE TABLE tAppointment 
(
Appointment_ID  int  NOT NULL PRIMARY KEY, 
Appointment_datetime datetime NOT NULL, -- CHECK CONSTRAINTS NEEDED    
Appointment_week  int  NOT NULL, 
Appointment_room  varchar(5) NOT NULL, 
Vet_ID    int  NOT NULL REFERENCES tVet(Vet_ID), 
Owner_ID    int  NOT NULL REFERENCES tOwner(Owner_ID), 
Pet_ID    int  NOT NULL REFERENCES tPet(Pet_ID) 
) 
+1

Пожалуйста, отметьте свой вопрос в базе данных, которую вы используете. –

ответ

0

Вы можете просто добавить его в этом является метод, использующий hour:.

CHECK (Appointment_datetime >= GETDATE() AND 
     DATEPART(HOUR, GETDATE()) NOT BETWEEN 8 AND 16 
    ) 

Примечание: Если вы хотите принять в выходные дни и праздники во внимание, что гораздо сложнее и, вероятно, требует пользовательской функции.