Ограничение поля времени таблицы Sqlserver - PullRequest
2 голосов
/ 29 сентября 2010

В 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 ]

2 голосов
/ 29 сентября 2010
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 голос
/ 29 сентября 2010

Чтобы запретить "времена", такие как 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 с частью даты, установленной на 1 января 1900 года?

0 голосов
/ 29 сентября 2010
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]'
) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...