Sql 从贷款日期计算归还日期

Sql 从贷款日期计算归还日期,sql,sql-server,database,date,Sql,Sql Server,Database,Date,我正在尝试实现一个图书馆管理数据库,我想根据借阅日期推断归还日期,包括借阅日期,这将保留我们允许用户拥有该书的天数。这是我目前的代码: CREATE TABLE LOAN ( COPY_ID int CONSTRAINT LOAN_COPY_FK FOREIGN KEY(COPY_ID) REFERENCES COPY(COPY_ID) NOT NULL, BORROWER_ID int CONSTRAINT LOAN_BORROWER_FK

我正在尝试实现一个图书馆管理数据库,我想根据借阅日期推断归还日期,包括借阅日期,这将保留我们允许用户拥有该书的天数。这是我目前的代码:

CREATE TABLE LOAN 
( 
    COPY_ID int CONSTRAINT LOAN_COPY_FK 
            FOREIGN KEY(COPY_ID) REFERENCES COPY(COPY_ID) NOT NULL, 
    BORROWER_ID int CONSTRAINT LOAN_BORROWER_FK 
            FOREIGN KEY (BORROWER_ID) REFERENCES BORROWER (BORROWER_ID) NOT NULL, 
    LOAN_DATE DATE NOT NULL CONSTRAINT check_loan_date 
            CHECK (LOAN_DATE < RETURN_DATE),
    LOAN_DAYS int NOT NULL, 
    RETURN_DATE AS (LOAN_DATE + LOAN_DAYS) CONSTRAINT LOAN_PK 
            PRIMARY KEY(COPY_ID, BORROWER_ID) 
)
我有一个错误,因为LOAN_DAYS是整数,我不知道如何将它设置为一天而不是没有月份和年份的日期。

您应该将返回日期计算为DATEADDday、LOAN_DAYS、LOAN_date,并且您不能在检查约束检查贷款日期检查贷款日期<返回日期>中使用计算出的返回日期

相反,我建议使用一个检查约束,即LOAD_DAYS大于0,这可以保证RETURN_DATE大于LOAD_DATE,如下所示:

CREATE TABLE LOAN 
( 
    COPY_ID int CONSTRAINT LOAN_COPY_FK FOREIGN KEY(COPY_ID) REFERENCES COPY(COPY_ID) NOT NULL, 
    BORROWER_ID int CONSTRAINT LOAN_BORROWER_FK FOREIGN KEY (BORROWER_ID) REFERENCES BORROWER (BORROWER_ID) NOT NULL, 
    LOAN_DATE DATE NOT NULL ,
    LOAN_DAYS int NOT NULL CONSTRAINT check_loan_days CHECK (LOAN_DAYS > 0), 
    RETURN_DATE AS DATEADD(day,LOAN_DAYS,LOAN_DATE) CONSTRAINT LOAN_PK PRIMARY KEY(COPY_ID, BORROWER_ID) 
)

你有什么错误?请添加更多信息。有关如何编写问题,请参见。在提问之前,请在线搜索您的问题。当然,除了您的SQL代码之外。请用清晰的句子解释你的问题,然后我们都会帮助你对不起,这是我第一次在这里问,我得到了流动错误{Msg 206,16级,状态2,第1行操作数类型冲突:date与int不兼容}为了让你的问题更清楚,您可以在问题中添加准确的错误消息。点击标签下方的编辑按钮编辑问题:-谢谢@MKYuones你救了我,非常感谢,我的问题在哪里1。我在RETURN\u DATE中使用了check约束,并且错误地计算了RETURN\u日期。非常感谢