7

時間:分:秒のように秒をフォーマットするトリッキーな方法はありますか? 例えば、

3660

秒は次のように表示されます。

01h 01m 00s

また

01:01:00

私はこれを行う標準的な方法を知っています:

  1. すべての秒を 3600 で割り、時間を取得します
  2. 残りの秒数を 60 で割り、分を求めます。
  3. 残りは秒です

次の問題に遭遇しました。

  1. これを行う別の関数を作成することはできません。

  2. 私のコードは、いくつかの CTE を使用して表示されます。したがって、変数は CTE のみを使用して宣言できます。

  3. 結果が1日よりも大きくなるため、標準ソリューションを使用できません-T-SQLを使用して秒をHH:MM:SSに変換する方法
4

3 に答える 3

15
SELECT RIGHT('00'+CONVERT(VARCHAR(10),Seconds/3600),2)  
    +':' 
    + RIGHT('00'+CONVERT(VARCHAR(2),(Seconds%3600)/60),2) 
    +':' 
    + RIGHT('00'+CONVERT(VARCHAR(2),Seconds%60),2) AS [HH:MM:SS] 
FROM table1

結果:

HH:MM:SS
01:01:00
01:03:20
01:10:00
00:10:00
00:01:00
00:00:30
24:00:00
24:06:40

このSQLFiddleを参照してください

于 2012-11-01T12:39:57.063 に答える
3
SELECT cast(seconds/3600 as varchar(6)) +
right(cast(dateadd(second, seconds,0) as time(0)), 6)
FROM <yourtable>
于 2012-11-01T14:31:25.737 に答える