我试图按照他们从车站的出发时间来订购一组列车时刻表,但是当火车经过午夜时会出现问题。
以下是流入我的mysql数据库的数据示例。对于给定的列车时刻表,我有基本路线和每个车站的基本出发时间(由标志下的y标记)。我不时会收到针对特定列车时刻表的修正出发时间的更新。
在我看来,上面不是问题,因为我根据timeref订购数据。然而,当火车经过午夜时我的问题就来了。这是因为我收到的时间是纯24小时格式 - 即01:00
Count Location Trainid Timeref Sche Update
1 London t256 22:10 y
2 Cricklewood t256 23:00 y
3 Luton t256 01:00 y
4 Leicester t256 02:00 y
5 Doncaster r659 06:00 y
6 Luton t256 01:10 y
7 Sheffield y783 05:00 y
我想将数据显示如下(按此顺序)。即按照原始时间表的顺序,但是卢顿的更新时间为01:10
London t256 22:10
Cricklewood t256 23:00
Luton t256 01:10
Leicester t256 02:00
我的下面的代码工作正常,除非火车穿过午夜
$stmt3=$mysql_link->prepare("SELECT count,trainid,location,timeref,sche,update FROM (SELECT count,trainid,location,timeref,sche,update FROM darwinall WHERE trainid=:trainid ORDER BY count DESC) as temp GROUP BY location ORDER BY timeref ASC");
$stmt3->execute(array(':trainid'=>$trainid));
foreach($stmt3->fetchAll(PDO::FETCH_ASSOC) as $row3) {
echo result.................
}
因此,除了上述内容,我得到以下结果,这是错误的
Luton t256 01:10
Leicester t256 02:00
London t256 22:10
Cricklewood t256 23:00
答案 0 :(得分:3)
如果你想在其他时间之后将所有时间都放在午夜和早上6点之间,你可以这样做:
ORDER BY timeref < '06:00', timeref
答案 1 :(得分:1)
您可以使用的一个技巧是检查当前时间,然后首先订购timeref
之后的所有timeref
(即今天的列车),然后再排序SELECT `count`, trainid, location, timeref, sche, `update`
FROM (SELECT `count`, trainid, location, timeref, sche, `update`
FROM darwinall
WHERE trainid=:trainid
ORDER BY `count` DESC) AS temp
GROUP BY location
ORDER BY timeref < CURRENT_TIME() ASC, timeref ASC
s之前它(即午夜后):
count
BTW:update
和$ git clone https://github.com/prerender/prerender.git
$ heroku create
$ git push heroku master
是保留字,你应该用反引号来保护它们。