我正在尝试创建一个带约束的表,其中date列应该只接受五月或十一月的任何日期。 我该怎么写约束?
答案 0 :(得分:2)
有两种方法可以实现此目的:在列上使用CHECK CONSTRAINT
或TRIGGER
。
CHECK Constraint
可能如下所示:
create table tbl(
date_col date
check( MONTH(date_col) = 5 OR MONTH(date_col) = 11)
)
您尚未指定特定数据库,因此仅将其视为伪代码。
答案 1 :(得分:0)
我可能误解了你的问题。如果您只是尝试在may和nov中检索值,则可以执行以下操作:
SELECT column1, column2, column3
FROM yourTable
WHERE MONTH(yourTimeStamp)=5 or MONTH(yourTimeStamp)=11
如果您试图将其他月份的值保留在数据库之外,那么您应该在与数据库连接的软件中真正做到这一点。
我不是一个sql大师,但在极少数情况下,我试图阻止外国软件以任何方式搞乱数据库以及我允许的其他方式,我' ll编写处理约束的存储过程,并将这些过程发布给软件提供商。
答案 2 :(得分:0)
我从您的评论中得出结论,您使用的是Management Studio,它是SQL Server的一部分。
它使用datepart()
函数。
您可以在此处查看更多内容Datepart documentation
因此,如果是这样的话,那就是:
create table tbl(
date_col date
check(datepart(month, date_col) = 5 OR datepart(month, date_col) = 11)
);