2012-04-24 27 views
0

24より大きな時間を格納する列を作成する必要があります。たとえば、'25:00:00''129:23:12'など)。SQL Server 2005で24時間以上の計算

この列は、datetime間隔の計算を実行するために使用されます: '時間'。

それ'23:59'の代わり'107:37'以下

が正常に動作している場合、私は

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

をしようとしていました。

'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

ちょうど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)