sql查询只接受两个月的日期

时间:2014-11-15 06:19:52

标签: sql date

我正在尝试创建一个带约束的表,其中date列应该只接受五月或十一月的任何日期。 我该怎么写约束?

3 个答案:

答案 0 :(得分:2)

有两种方法可以实现此目的:在列上使用CHECK CONSTRAINTTRIGGER

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