我在下表中有一个简单的记录:
Depart_dt Arrived_dt
10/1/2013 6:15:00 AM 10/1/2013 7:25:00 AM
根据我的计算,它是1小时10分钟。 感谢VKP,我使用了如下的datediff函数:
Select
Dateiff (DD, depart_dt, arrived_dt) as day,
Dateiff (HH, depart_dt, arrived_dt) as hour,
Dateiff (Minute, depart_dt, arrived_dt) as min,
Date if (second, depart_dt, arrived_dt) as second
from temp
但是,我的结果看起来很有趣,分钟和第二列
Day Hour Min Second
0 1 70 4200
小时显示正确,但我不确定它是如何达到70分钟的分钟列和4200分钟的第二列?
抱歉,伙计们,我错了。是的,70分钟是正确的,因为那是1小时10分钟。请忽略这个答案 0 :(得分:0)
你可以使用DATEDIFF
来获得整数差异。
select item,
datediff(dd, start_dt, end_dt) as total_days,
datediff(hh, start_dt, end_dt) as total_hours,
datediff(minute, start_dt, end_dt) as total_minutes,
datediff(second, start_dt, end_dt) as total_seconds
from yourtable
答案 1 :(得分:0)
使用datediff时,你必须了解它的作用。该名称非常混乱,因为它实际上并没有计算日期差异,而是根据documentation:"返回指定日期部分的计数(有符号整数)交叉边界在指定的startdate和enddate之间。"
这意味着例如06:15和07:00的dateiff小时是1小时。
你可能想要这样的东西:
DATEDIFF(SECOND, [Depart_dt], [Arrived_dt])/86400 as Days,
((DATEDIFF(SECOND, [Depart_dt], [Arrived_dt])%86400)/3600) as Hours,
(((DATEDIFF(SECOND, [Depart_dt], [Arrived_dt])%86400)%3600)/60) as Minutes,
(((DATEDIFF(SECOND, [Depart_dt], [Arrived_dt])%86400)%3600)%60) as Seconds
计算全天/小时等的金额,因此小时数永远不会超过24小时。