Sqlserver表时间字段约束

时间:2010-09-29 16:16:25

标签: sql-server-2005 constraints

在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]' )

我希望约束允许第一个数字是可选的,但没有太多运气。

3 个答案:

答案 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]'
)