SQL2008:对表中Date类型字段建立约束总是报错

表A有两个字段:A1、A2,都是Date类型1、建立约束:A1<A2,提示约束错误:验证约束A时出错。2、建立约束:A1<'2011-01-01'同样报错。3、如果把数据... 表 A 有两个字段:A1、A2,都是Date类型
1、建立约束:A1<A2 ,提示约束错误:验证约束 A 时出错。
2、建立约束:A1<'2011-01-01' 同样报错。
3、如果把数据类型改成DateTime就可以了。
总之,Date类型不能建立比较大小的约束
展开
 我来答
摆渡浮桥
2012-08-31 · TA获得超过3629个赞
知道大有可为答主
回答量:1610
采纳率:100%
帮助的人:2224万
展开全部
Date 类型应该也可以做约束。以下是我做的一个测试
CREATE TABLE [dbo].[temp_test](
[d1] [date] NULL,
[d2] [date] NULL
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[temp_test] WITH CHECK ADD CONSTRAINT [CK_temp_test] CHECK (([d1]<[d2]))
GO
ALTER TABLE [dbo].[temp_test] CHECK CONSTRAINT [CK_temp_test]
GO

insert into temp_test values('2012-08-09','2012-08-01') -- Fail
insert into temp_test values('2012-08-09','2012-08-10') -- Success
更多追问追答
追问
“摆渡浮桥”的程序是可以通过,也成功建立了表和约束,但在SSMS中通过人机交互方式还是不行,比如对上面建立的约束再人机交互修改就报错。
追答
这就是在SSMS中建立的,并不是我手写的代码。
lxr_303
2012-08-31 · TA获得超过473个赞
知道小有建树答主
回答量:875
采纳率:0%
帮助的人:517万
展开全部
那就改成datetime,或者把A1和A2转换成日期类型的,to_date(a1,‘yyyy-mm-dd’)再比较
追问
1、谢谢“ 摆渡浮桥”,按照您的办法试了,用编程的方法建立约束可以,但通过在SSMS中更改该约束时,还是出错。

2、谢谢“lxr_303”,好像也不行,而且A1、A2就是日期类型。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式