在SqlServer 2005中,我有一个表,其中TimeOfDay字段是varchar(5)。我想将字段值限制为仅有效时间(13:40,2:20)。这就是我到目前为止所拥有的
ALTER TABLE tbl ADD CONSTRAINT ck
CHECK (TimeOfDay like '[1-2][0-9]:[0-9][0-9]' )
我希望约束允许第一个数字是可选的,但没有太多运气。
答案 0 :(得分:2)
ALTER TABLE tbl ADD CONSTRAINT ck
CHECK (
(LEN(TimeOfDay) = 5 and TimeOfDay like '[1-2][0-9]:[0-9][0-9]')
or (LEN(TimeOfDay) = 4 and TimeOfDay like '[0-9]:[0-9][0-9]')
)
答案 1 :(得分:1)
为了禁止“时间”,例如29:99
ALTER TABLE tbl ADD CONSTRAINT ck
CHECK (
TimeOfDay like '[0-9]:[0-5][0-9]' OR
TimeOfDay like '1[0-9]:[0-5][0-9]' OR
TimeOfDay like '2[0-3]:[0-5][0-9]'
)
您是否考虑过将datetime
存储为日期部分设置为1900年1月1日?
答案 2 :(得分:0)
ALTER TABLE tbl ADD CONSTRAINT ck
CHECK (
TimeOfDay like '[1-2][0-9]:[0-9][0-9]'
OR TimeOfDay like '[0-9]:[0-9][0-9]'
)