2012-04-24 2 views
0

24보다 큰 시간을 저장할 열을 만들어야합니다 (예 : '25:00:00', '129:23:12' 등).SQL Server 2005에서 24 시간 이상 계산

해당 열은 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

바보입니다. 시간 또는 날짜 간격을 계산하려면 datetime 유형과 시간 및 날짜 함수를 사용하는 것이 가장 좋은 이유는 무엇입니까? – paulsm4

+4

몇 초 만 저장하는 것이 더 간단하지 않습니까? 시간과 분으로 변환하는 것은 간단한 산술입니다. – Joni

+1

아니요, 숫자를 datetime으로 저장하고 datediff()와 같은 함수를 사용하는 것이 더 간단 할 것입니다. 예 : http://stackoverflow.com/questions/1770594/how-to-calculate-difference-in-hours-decimal-between-two-dates-in-sql-server – paulsm4

답변

2

그냥 날짜 시간 데이터 유형으로 값을 저장합니다. +, -, SUM, MIN, MAX 등의 datetime 데이터 유형에 대해 수학적 계산을 수행 할 수 있으며 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) 
관련 문제