将时间“28:45”转换为“4:45”MySQL

时间:2016-06-22 05:49:22

标签: mysql sql time

我正在寻找一种根据实际时间订购结果的方法。在我的表中你可以看到如下值:

 1,23:45
 2,9:45
 3,27:43

当我进行查询时,我想知道如何根据实际的24小时时间对它们进行排序。

例如:

3,3:43
2,9:45
1,23:45

注意它如何改变27:43到3:43,并创建订单。

我在使用它的地方,在此查询中:

SELECT    *,COALESCE(ADDTIME(s.`departure_time`,SEC_TO_TIME(rt.delay)),s.`departure_time`) as `rt_time` FROM `stop_times` s INNER JOIN `trips` t ON s.`trip_id` = t.`trip_id` INNER JOIN `stops` st ON st.`stop_id` = s.`stop_id` INNER JOIN `routes` r ON r.`route_id` = t.`route_id` LEFT JOIN `rt_trips` rt ON t.`trip_id` = rt.`trip_id` where (s.`stop_id` = 'CB900') and ( ( s.`departure_time` >= '00:50' and s.`departure_time` <= '05:50') OR ( s.`departure_time` >= '24:50' and s.`departure_time` <= '29:50') ) and (s.`pickup_type` = '0') and (t.`service_id` IN ('removed to make it easier')) HAVING (`rt_time` BETWEEN '01:50' and '05:50' ) ) OR ( `rt_time` BETWEEN '25:50' and '29:50'  ) ORDER BY `order` ASC

说明: 信息是一个过境时间表,可能会在第二天(可能是星期六)前进。所以,时间可能会变成25:50,那意味着第二天1:50。

由于 赛勒斯

2 个答案:

答案 0 :(得分:1)

在time_column上尝试此功能

pom.xml

您可能需要将日期转换为字符串为整数,进行数学计算,然后再将其转换为时间。但小提琴版似乎在varchar到整数转换上正常工作。检查一下

http://sqlfiddle.com/#!9/ff60f9/1

答案 1 :(得分:1)

嗯,如果您只想获得0到24小时之间的值,那么我会这样做:

select concat(mod(substring_index(time_column, ':', 1) + 0, 24), ':',
              substring_index(time_column, ':', -1)
             )