日期:2014-05-17  浏览次数:20383 次

SQL 时间差问题,求大侠解决!!!
select datediff(HH,'飞机航班信息表1.出发时间','飞机航班信息表.到达时间 ') as 时间差 ,飞机航班信息表.目的地 as 中转站 from 飞机航班信息表 ,飞机航班信息表1 
where 飞机航班信息表.出发地 ='海口' AND 飞机航班信息表.目的地= 飞机航班信息表1.出发地 AND 飞机航班信息表1.目的地 ='拉萨' order by 时间差;

飞机航班信息和飞机航班信息表1内容相同,相当于一个换乘查询。
 
结果提示:消息 241,级别 16,状态 1,第 1 行从字符串转换日期和/或时间时,转换失败。

这该怎么解决?

还有一点,假设中转站为北京,海口到达北京的时间是23:55:00,从北京到拉萨的出发时间为第二天01:20:00,时间差为负,该如何解决。

呵呵,也不知道上面的SQL 语句是否正确,还望高手不吝赐教!



------解决方案--------------------
加个abs取绝对值就可以了
SQL code
select abs(datediff(HH,飞机航班信息表1.出发时间,飞机航班信息表.到达时间)) as 时间差 ,飞机航班信息表.目的地 as 中转站 
from 飞机航班信息表 ,飞机航班信息表1  
where 飞机航班信息表.出发地 ='海口' 
      AND 飞机航班信息表.目的地= 飞机航班信息表1.出发地 
      AND 飞机航班信息表1.目的地 ='拉萨' 
order by 时间差;