0

Float 型の TimeSpent という列があります。

値が含まれています (つまり、 2.50、1.25、3.75、5.60 )

これらの時間の値を (2:30、1:15、3:45、5:36) などの適切な時間の値に変換する必要があります)

これはどのように行うことができますか?

4

3 に答える 3

1

これを試してQuery

select 
time_decimal
,cast(cast(cast(time_decimal as int) as varchar)+
':'+cast(cast((time_decimal - cast(time_decimal as int)) * 60 as int) as varchar)+
':'+cast(cast(((time_decimal - cast(time_decimal as int)) * 60-
    cast((time_decimal - cast(time_decimal as int)) * 60 as int)) * 60 as int) as varchar) as time) as real_time
from time1

SQL フィドル

于 2013-05-10T11:12:24.180 に答える
0

データ型が time の列をすでに作成していると仮定すると、TimeSpent の左側をドットまで連結し、ドットの右側を 60 倍してテーブルを更新します。

SQL サーバー 2012:

UPDATE yourTable SET
newTimeColumn = CONCAT(CAST(TimeSpentFloat AS INT), ':', (TimeSpentFloat - CAST(TimeSpentFloat AS INT)) * 60);

SQL Server 2008 以前:

SELECT 
CAST(CAST(2.75 AS INT) AS CHAR) + ':' + CAST((2.75 - CAST(2.75 AS INT)) * 60 AS CHAR);

sqlfiddleで動作することを確認してください。

于 2013-05-10T07:58:01.113 に答える