MYSQL订购午夜时间表的PHP列车时刻表

时间:2015-04-25 08:57:00

标签: php mysql sql select

我试图按照他们从车站的出发时间来订购一组列车时刻表,但是当火车经过午夜时会出现问题。

以下是流入我的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 

2 个答案:

答案 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 是保留字,你应该用反引号来保护它们。