Почему вы хотите хранить то, что фактически является двумя датами в одном поле, а не в двух?Нет ли случаев, когда в расписании могут быть пересечения дней?(т.е. 01.03.2011 23:59, 03.02.2011 01:35)?Вы не возражаете против того, чтобы разбирать информацию, а не сразу готовить ее к запросу?
Если вы действительно этого хотите, нет причины, по которой вы не можете сохранить ее как строковый тип, возможно, через запятую, возможноXML в соответствии с предложением, но я не могу сказать, что он рекомендуется, поскольку поля даты / времени более компактны, удобны и быстры / гибки для целей поиска, и есть много полезных функций T-SQL, которые можно легко использовать для типов даты / временикоторую вам будет трудно использовать в строке без разбора и приведения / преобразования.
Если у вас есть веская причина не использовать два поля даты и времени, у меня будет еще один пончик!(ps. happy Fat четверг).
Одна быстрая и ужасно злая мысль ... вы могли бы использовать часть даты и времени, чтобы сохранить «разницу» ... подсунуть ее в «секунды» и «миллисекунды»"значения и применить его к основной дате / времени, чтобы получить новое значение.Немного хакерский, но он может сработать, в зависимости от ваших требований к диапазону.
-- Example: 01/03/2011 12:30:02
-- Translates into - first of March 2011, 12:30 to 14:30 (12:30 + (seconds * hours))
set @ModifiedDatetime =
DATEADD(hour, DATEPART(second, @originalDateTime), @originalDateTime);
Остерегайтесь ошибок округления с миллисекундами ... и, пожалуйста, подумайте о последствиях того, что вы делаете.Бог убивает котенка каждый раз, когда кто-то злоупотребляет типом:)