我想询问是否有可能对datetime
列进行检查约束,确保该列位于11月或5月。
Create Table TestDate (
.....
.....
date datetime not null default '14/11/2012'
...
...
constraint dateCheck check *date must be either November or May*
非常感谢你的帮助!
编辑:添加问题,
是否可以将日期列的默认值设置为2012年11月14日'而不是' 14/11 2012'?我知道它正在使用日期时间数据类型,除非更改为字符串(char / varchar)数据类型,否则无法更改?
答案 0 :(得分:3)
您可以使用month
功能提取日期的月份部分:
CREATE TABLE TestDate (
date datetime not null default '14/11/2012'
constraint dateCheck check (MONTH(date) IN (5, 11))
)
答案 1 :(得分:2)
是的,您可以在日期列的月份部分添加约束。请查看以下示例:
Create table TestTable
(
from_date DAtetime
constraint checkdates check (DATEPART(mm, from_date) = 11 OR DATEPART(mm, from_date) = 5)
);
如果 datepart 不包含11月或5月,则上述脚本会将插入限制在 from_date 列中。
是的,您可以使用默认值作为' 2012年11月14日'。检查此版本:
Create table TestTable
(
from_date DAtetime default ('14 November 2012')
constraint checkdates check (DATEPART(mm, from_date) = 11 OR DATEPART(mm, from_date) = 5)
);
然后,尝试使用此insert语句检查默认值:
Insert into TestTable DEFAULT values
答案 2 :(得分:2)
我会在check
约束
datepart
function
create table testDate (
dt datetime not null default '14/11/2012'
);
alter table testDate
add constraint chk_month
check( datepart( month, dt ) in (5,11));
您可以在this SQL Fiddle
中查看此示例答案 3 :(得分:0)
您需要使用Trigger(在插入之前和更新之前)来处理您的要求。以下MSDN链接可能会帮助您http://msdn.microsoft.com/en-us/library/ms189799.aspx