Нужно хранить большое количество часов и минут (т.е. 36:30) наилучшим способом?

#sql #sql-server-2005

#sql #sql-server-2005

Вопрос:

Мне нужно сохранить в SQL Server 2005 «количество времени» для приложения, которое регистрирует ежемесячную сверхурочную работу. Например. кто-то мог бы отработать 36 часов и 30 минут сверхурочно за один месяц. Мне нужно сохранить это и выполнить вычисления на нем — какой был бы лучший метод.

Спасибо

Ответ №1:

Почему бы просто не сохранить количество минут в одном целочисленном столбце? Это идеальное представление для вычислений (например, итогов, упорядочения и т.д.), И вы можете легко разделить его на часы и минуты, когда вам нужно его отформатировать.

Комментарии:

1. Время (duration) идеально хранится как стандартный интервал типа данных SQL. Тип данных INTERVAL был определен в стандарте SQL 1992 года, но SQL Server его пока не поддерживает. На самом деле, среди основных платформ, я думаю, только PostgreSQL полностью поддерживает тип данных INTERVAL. Отсутствие поддержки базы данных означает, что мы регулярно находим людей, пытающихся вычислить выражения типа 2:00 3:00 , что здесь означает «2 часа плюс 3 часа» (ерунда), а не «2 часа плюс 3 часа» (5 часов).

2. Спасибо — какая команда для разделения минут на часы и минутки?