【问题标题】:SQL DDL - 2 CHECK Constraints on 1 AttributeSQL DDL - 1 个属性的 2 个 CHECK 约束
【发布时间】:2016-03-19 14:05:29
【问题描述】:

下面是我要创建的表的 DDL。但是,我希望属性“Appointment_datetime”是未来日期,并且在工作时间(上午 8:00 到下午 5:00)。我可以使用 -'CHECK (Appointment_datetime >= GETDATE()) 获得未来的日期部分,但是如何在此约束之上获得上午 8 点到下午 5 点之间的时间?

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)
)

【问题讨论】:

  • 请用您正在使用的数据库标记您的问题。

标签: sql constraints ddl check-constraints check-constraint


【解决方案1】:

你可以添加它。这是使用hour的方法:

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

注意:如果你想把周末和节假日考虑在内,那就更难了,可能需要一个用户定义的函数。

【讨论】:

    猜你喜欢
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多