我正在寻找一种根据实际时间订购结果的方法。在我的表中你可以看到如下值:
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。
由于 赛勒斯
答案 0 :(得分:1)
在time_column上尝试此功能
pom.xml
您可能需要将日期转换为字符串为整数,进行数学计算,然后再将其转换为时间。但小提琴版似乎在varchar到整数转换上正常工作。检查一下
答案 1 :(得分:1)
嗯,如果您只想获得0到24小时之间的值,那么我会这样做:
select concat(mod(substring_index(time_column, ':', 1) + 0, 24), ':',
substring_index(time_column, ':', -1)
)