2012-03-14 1 views
0

目標:は、新しいデータ型に変換した後の時間を計算し

Hour 
----- 
2 
2,5 
1 

問題:
それは特定のデータ型に列のStartTimeと終了時間を変換するための任意possibiltiyされ、その後、やって
は、このリストを使用してデータを表示するにはX1- X2のcalculacutionは

CREATE TABLE Data 
( 
    StartTime VARCHAR(5), 
    EndTime VARCHAR(5), 
) 
GO 

INSERT INTO Data(StartTime,EndTime) 
SELECT '10:00','12:00' UNION ALL 
SELECT '13:30','16:00' UNION ALL 
SELECT '14:00','15:00' UNION ALL 
GO 
+0

http://msdn.microsoft.com/en-us/library/ms187928.aspx –

+0

どのバージョンの小数で分を取得するには? –

+1

探している特定のデータタイプは何ですか?なぜStartTimeとEndTimeを変換したいのですか?あなたは何を達成したいですか?これまでに何を試しましたか? –

答えて

1

EDITED: SQL-SERVERの

SELECT ROUND(CAST(Mins AS FLOAT)/60,2) AS [hour] 
FROM (
SELECT DATEDIFF(minute, CAST(StartTime AS TIME),CAST(EndTime AS TIME)) AS Mins 
    FROM Data 
) A 
+0

TIMEデータ型のためsql2005では動作しません。また、1つだけが必要なところに2つの選択肢があります。 – daniloquio

0

あなたはSQL-Server 2008を使用している場合は、その理由だけでtimeオブジェクトを使用していません。その後、適切な時間比較関数を実行できます。そうでない場合でも、convertingによってdatetimeと実行中の比較関数に作用させることができます。私はdatetimeにちょうど時間を使って変換すると、日付が最小の日付になると信じています。

1
SELECT DATEDIFF(mi, CONVERT(DATETIME, StartTime), CONVERT(DATETIME, EndTime)) 
        /60.0 AS Hour 
FROM Data 

それはあなたの例のデータのための仕事が、終了時間は、次の日になることができれば、あなたは次のように、チェックする必要があります:

STARTIME:午前22時30

終了時間:1:20

そのエスシナリオは可能ですか?そうであれば、時間だけでなく、開始時刻と終了時刻の両方の日付を保存する必要があります。