1

私はこのようなテーブルを持っています

Id  Student     Test_Start          Test_End
1   A       2013-01-08 15:00:17.100     2013-01-08 16:05:55.100 
2   B       2013-02-08 17:01:11.800     2013-02-08 19:05:15.880
3   C       2013-02-08 14:41:10.880     2013-02-08 16:49:22.880

私がやろうとしているのは、Test_End - Test_Start 時間を取得して時間に変更し、昇順で表示することです。私が試してみました:

Select convert(date, Test_End) - convert(date,Test_Start) as 'Time_Taken' from students 

またはDATEDIFFを使用しようとしましたが、うまくいかないようです。これを達成して次のようなものを表示する最良の方法はありますか:

Time_Taken
1
2
2
4

2 に答える 2

4
select 
    id,
    student,
    datediff(hour, test_start, test_end) as time_taken
from students
order by time_taken

丸めが必要な場合は、分を決定し、次の時間に切り上げるのに必要な分数を追加してから、60 で割って丸められた時間を取得します...

select 
    id,
    student,
    (datediff(minute, test_start, test_end) + 30) / 60 as rounded_time_taken
from students
order by rounded_time_taken
于 2013-01-08T22:17:43.893 に答える
1

整数時間が本当に必要ですか? ほとんどの状況では、結果を小数時間として表示したいと思います。

select id, student, datediff(s, test_start, test_end)/(60.0*60.0) as hours_taken
from students
order by test_start, test_end)/(60.0*60.0) 
于 2013-01-08T22:28:49.997 に答える