2012-04-24 6 views
0

Мне нужно создать столбец, который будет хранить часы больше 24. Например, '25:00:00', '129:23:12' и т. Д.).Расчет более чем на 24 часа в SQL Server 2005

Эта колонка будет использоваться для выполнения расчетов между datetime интервалами: «время».

Я пытался

SELECT CAST((CAST(CAST(RIGHT('107:37', 6) as datetime) AS FLOAT))/(207.160) AS DATETIME) 

если он

ниже '23:59' вместо '107:37' работает нормально.

'107:37' ошибка отдавания:

The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.

+2

Это глупо. Если вы хотите рассчитать интервалы времени или даты, то почему бы просто не использовать тип даты и времени, а также функции времени и даты? – paulsm4

+4

Не будет ли проще хранить только количество секунд? Преобразование в часы и минуты - простая арифметика. – Joni

+1

Нет, было бы проще сохранить номер в качестве даты и времени и использовать такие функции, как lateiff(). Например: http://stackoverflow.com/questions/1770594/how-to-calculate-difference-in-hours-decimal-between-two-dates-in-sql-server – paulsm4

ответ

2

Просто хранить значение как тип данных даты и времени. Вы можете выполнять математические вычисления для типов данных datetime, таких как +, -, SUM, MIN, MAX и т. Д., И вы также можете использовать DateDiff и DateAdd. Единственный сложный бит, который у вас будет, заключается в отображении значения как HHHH: mm: ss. Вы можете сделать это достаточно легко, хотя:

DECLARE @datetime DATETIME 
SET @datetime = 4.2 
SELECT CAST((FLOOR(CAST(@datetime AS FLOAT)) * 24) + DatePart(Hour, @datetime) AS VARCHAR) + 
    ':' + CAST(DatePart(Minute, @datetime) AS VARCHAR) 
    + ':' + CAST(DatePart(Second, @datetime) AS VARCHAR) 
Смежные вопросы