TSQLで分数をhh:mm形式に変換するにはどうすればよいですか?



How Convert Number Minutes Hh



解決:

期間を日付に変換してからフォーマットすることができます。

DECLARE @FirstDate datetime、@ LastDate datetime SELECT @FirstDate = '2000-01-01 09:00:00'、@ LastDate = '2000-01-01 11:30:00' SELECT CONVERT(varchar(12)、DATEADD(分、DATEDIFF(分、@ FirstDate、@ LastDate)、0)、114)/ *結果:02:30:00:000 * /

精度を下げるには、varcharのサイズを変更します。



SELECT CONVERT(varchar(5)、DATEADD(minute、DATEDIFF(minute、@ FirstDate、@ LastDate)、0)、114)/ *結果:02:30 * / 

この関数は、分単位の期間を読み取り可能な時間と分の形式に変換するためのものです。つまり、2時間30分。期間が1時間未満の場合は時間を削除し、期間が時間単位で余分な分がない場合は時間のみを表示します。

CREATE FUNCTION [dbo]。[MinutesToDuration](@ minutes int)RETURNS nvarchar(30)ASBEGIN宣言@hoursnvarchar(20)SET @hours = CASE WHEN @minutes> = 60 THEN(SELECT CAST((@ minutes / 60) AS VARCHAR(2))+ 'h' + CASE WHEN(@ minutes%60)> 0 THEN CAST((@ minutes%60)AS VARCHAR(2))+ 'm' ELSE '' END)ELSE CAST((@分%60)AS VARCHAR(2))+ 'm' END return @hours END

この機能を使用するには:



SELECT dbo.MinutesToDuration(23)

結果: 23メートル

SELECT dbo.MinutesToDuration(120)

結果: 2時間

SELECT dbo.MinutesToDuration(147)

結果: 2時間27分



お役に立てれば!


これらが最良の選択肢であるかどうかはわかりませんが、間違いなく仕事を成し遂げることができます。

@durationsテーブルを宣言します(Duration int)@durations(Duration)に挿入values(60)、(80)、(90)、(150)、(180)、(1000)-オプション1-手動で値を連結しますselect right( '0' + convert(varchar、Duration / 60)、2)+ ':' + right( '0' + convert(varchar、Duration%60)、2)from @Durations --Option2-を利用するSQL Server 2008以降で使用可能な時間変数selectleft(convert(time、DATEADD(minute、Duration、0))、5)from @durations GO