2016-03-31 47 views
4

テーブルをdatetime列 "StartTime"と "CompleteTime"で構成しています。プロセスが完了するまで、最初はcompleteTime列はNULLになります。 例:2:01 Hrで (「01」これは「2」という意味を表し時間と分を表します)2つの日付間の時間と分を表示する方法

Iをそして今、私の要件は、

出力は、以下に示すように、時間と分を表示することです以下のようにしようとしました:

Declare @StartDate dateTime = '2016-03-31 04:59:11.253' 
Declare @EndDate dateTime = GETUTCDATE() 

SELECT REPLACE(CONVERT(VARCHAR,CAST(DATEDIFF(second, @StartDate, 
ISNULL(GETUTCDATE(),@EndDate))/36000.0 AS DECIMAL(9,2))) + ' hr','.',':') 

出力:

0:05 hr 

必要な出力:

0:32 hr 

注:一度私のクエリをチェックするマーキング負つつこんにちは。私はすでにこれに関連するリンクをいくつか引用しましたが、うまくいきません。

+0

http://stackoverflow.com/questions/13577898/sql-time-difference-between-two-dates-result-in-hhmmss – mohan111

答えて

1

この

DECLARE @STARTDATE DATETIME = '2016-03-31 04:59:11.253' 
DECLARE @ENDDATE DATETIME = GETUTCDATE() 

SELECT CONVERT(VARCHAR(10),DATEDIFF(MINUTE, @STARTDATE, @ENDDATE)/60)+':'+CONVERT(VARCHAR(10),DATEDIFF(MINUTE, @STARTDATE, @ENDDATE)%60)+' hr' AS DIFF 

の検索結果を試してみてください24時間もこれを処理します

72:56 hr 
0
Declare @StartDate dateTime = '2016-03-31 04:59:11.253' 

SELECT CONVERT(varchar(10),DATEADD(minute, DATEDIFF(minute, @StartDate,GETUTCDATE()), 0), 114) + ' Hr' 

戻り値:「0:43 Hrの」

あなたISNULL(GETUTCDATE(),@EndDate)GETUTCDATE()NULLになることはありませんので、何もしていない、とあなたは36000代わりの3600で割ったが、あなたのクエリで主な問題(60分/時間)を10進数のコンテナに入れていたということです。つまり:012秒の代わりに

の90秒が1:30である必要があります。編集:私の最初の質問では、DATEADD()メソッドはよりクリーンです。

Diff 
0:52 hr 

差分より:

1

してみてください。この(MS SQLクエリ) - -

Declare @StartDate dateTime = '2016-03-31 04:59:11.253' 
Declare @EndDate dateTime = GETUTCDATE() 

SELECT CONVERT(varchar(5), 
    DATEADD(minute, DATEDIFF(minute, @StartDate, @EndDate), 0), 114) + ' hr' 

結果0時47時間は

+0

差分以上の24時間は、これを処理しません –

関連する問題