Я бы порекомендовал по-прежнему использовать тип данных DateTime и игнорировать значения даты - в идеале, используя статическую MinDate для SQL (Google it). Это даст вам преимущества работы со строго типизированным полем, и единственной стоимостью будет несколько дополнительных байтов.
Что касается диапазонов, храните их в двух отдельных столбцах. Затем вы можете вычесть одно из другого, чтобы определить разницу.
Редактировать: немного погуглил.
- SQL Server 2008 добавляет тип данных Time, так что вы можете рассмотреть это.
- Вы можете использовать тип DateTime в SQL 2005 и объединить его с функцией CONVERT, чтобы извлечь только HH: MM: SS.MMM
- Различные версии SQL поддерживают разные минимальные даты. Вы можете использовать статическую дату, которая будет поддерживаться всеми, например, 1/1/2000, или вы можете использовать минимальное значение SQL 2005, равное 1/1/1753, и добавить значения времени к этому начальному дню
Так что, если вы придерживаетесь 2005 года, выберите статическую дату, например, 1/1/2000, и сохраните в ней свое время. Таким образом, 1: 30: 2000-1-1: 00: 01: 30.000, а 1: 15: 2000-1-1: 01: 15: 00.000
.
Затем вы можете выполнить Date2 - Date1 и получить свой результат (1ч: 15: м - 1м: 30с) 2000-01-01 01: 13: 45.000. Преобразуйте его, и вы получите 1: 13: 45.