Сохранение информации о продолжительности в SQL Server - PullRequest
1 голос
/ 30 января 2010

У меня есть приложение WPF, в котором одно из полей имеет цифровое поле для ввода продолжительности телефонного звонка, которое называется ActivityDuration.

Ранее это было сохранено как целочисленное значение, которое представляет минуты. Однако теперь клиент желает записывать собрания с использованием одной и той же таблицы, но собрания могут длиться 4-5 часов, поэтому ввод 240 минут не очень удобен для пользователя.

В настоящее время я рассматриваю свои варианты: изменить ActivityDuration на значение времени в SQL 2008 и попробовать использовать поле ввода маски времени или оставить его целым числом и представить клиенту два числовых поля ввода, одно часов и один минут, а затем выполните вычисления, чтобы сохранить их в SQL Server 2008 в виде целых минут.

Я открыт для комментариев и предложений. Еще одно соображение заключается в том, что мне нужно будет рассчитать общее время на основе ActivityDuration, поэтому поле DataType должно позволять его легко суммировать.

Ответы [ 2 ]

0 голосов
/ 31 января 2010

Новый тип данных времени поддерживает только 24 часа, поэтому, если вам нужно больше, вам придется использовать datetime. Таким образом, если сумма 7 x 4-часовых встреч, вы получите «4 часа» обратно

То, как БД хранит данные, также отличается от того, как вы представляете и собираете данные.

Почему бы не отобразить и преобразовать тип hh: nn в клиенте и сохранить как datetime?

0 голосов
/ 30 января 2010

Отслеживайте время начала и окончания, не нужно маскировать дату, так как продолжительность будет просто вычислением двух дат. Вы даже можете сделать это в «сеансах», так что одно собрание может иметь несколько сеансов (то есть одно собрание, которое охватывает весь обед, которое не должно учитываться по продолжительности ...).

Тип данных: datetime или smalldatetime.

Затем, чтобы получить «общую продолжительность», это просто запрос, использующий

Select sum(datediff(mm, startdate, enddate)) from table where meetingID = 1
...