SQL CE не имеет типа времени или определенных пользователем типов, поэтому вы можете выбрать datetime или int, представляющие минуты. Если наибольшее время, которое вам нужно сохранить, составляет 23:59 = 23 * 60 + 59 = 1439 = количество минут в дне, начиная с минуты 0, smallint - это наименьший целочисленный тип, который будет соответствовать этому диапазону.
Не поддавайтесь искушению хранить часы и минуты в отдельных столбцах в виде миниатюр. При этом использовалось бы то же пространство, что и для единственного smallint, но тогда для каждого вычисления времени потребуется умножить часы на 60 и добавить минуты, а для каждого order by
потребуется два столбца вместо одного.
Хранить в минутах; на дисплее вы можете разделить минуты на часы и минуты с помощью
select floor( absminutes / 60 ) as hours, absminutes % 60 as minutes,
from some table
order by absminutes;
Я бы назвал столбец (столбцы) minutes
или absminutes
(для абсолютных минут), если вы хотите отличить 1439 минут в день от 0-59 минут в час.
Чтобы преобразовать значение базы данных в объект Timespan, используйте ctor Timespan(int, int, int)
, например, new TimeSpan( floor(absminutes / 60 ), absminutes % 60, 0)
или (лучше) ctor Timespan(long)
с new Timespan( absminutes * TimeSpan.TicksPerMinute )
.
Чтобы вставить или обновить базу данных из объекта Timespan, установите absminutes на someTimespan.TotalMinutes % 1440
.