我有以下两种情况
案例1
表1
Name Start_Sub1 End_Sub1 Start_Sub2 End_Sub2
A 2018-09-19 07:42:00 2018-09-19 09:12:00 2018-09-23 04:02:00 2018-09-23 05:09:00
我想找到学生在考试中花费的总时间,即在两个科目中花费的时间。我应该使用哪个函数来获取此信息。
情况2: 由于人为错误,数据记录如下:
Name Start_Sub1 End_Sub1 Start_Sub2 End_Sub2
A 2018-09-19 07:42:00 2018-09-19 09:12:00 2018-09-19 08:02:00 2018-09-19 02:09:00
在这种情况下,两个时间戳记中的时间重叠。在这种情况下可以计算出在考试中花费的总时间吗?
答案 0 :(得分:0)
您可以使用EXTRACT()
函数将时间戳转换为秒,并找出分段是否重叠。查询应如下所示:
select
*,
case
when extract(epoch from End_Sub1) < extract(epoch from Start_Sub2)
then extract(epoch from End_Sub1) - extract(epoch from Start_Sub1) +
extract(epoch from End_Sub2) - extract(epoch from Start_Sub2)
else extract(epoch from End_Sub2) - extract(epoch from Start_Sub1)
end as diff
from table1
有关如何获取时差的详细信息,请参见Time difference in seconds using Nettezza。