我有这样的查询
"SELECT booking.referance_no AS ref_no,
booking.entry_date AS dep_date,
TIME_FORMAT(booking.entry_time,'%H:%i') as dep_time,
booking.first_name AS fname,
booking.last_name AS lname,
booking.mobile AS mobile
FROM booking WHERE $WHERE1
GROUP BY booking.book_id
UNION ALL
SELECT supplier.reference_no AS ref_no,
DATE_FORMAT(supplier.departure_date_time,'%d-%m-%Y') AS dep_date,
TIME_FORMAT(supplier.departure_date_time,'%H:%i') AS dep_time,
supplier.fname AS fname,
supplier.lname AS lname,
supplier_subscribers.mobile AS mobile
FROM supplier WHERE $WHERE2
ORDER BY `dep_date` ASC, `dep_time` ASC";
和Where子句
$WHERE1="STR_TO_DATE(booking.entry_date, '%d-%M-%Y') BETWEEN '".$from_date." 00:00:00' AND '".$to_date." 23:59:59'";
$WHERE2="supplier.departure_date_time BETWEEN '".$from_date." 00:00:00' AND '".$to_date." 23:59:59'";
场景一
在 24 小时内搜索时,ORDER BY dep_date ASC, dep_time ASC
我得到这样的结果
检查上面快照中的第 63
和 64
行,结果按日期
排序,但也不按时间
排序第一个结果显示从 supplier
表到第 63
行,然后从 64
从表 booking
开始,结果就像结果按每个表排序(首先是 supplier
表,然后是 booking
表),然后按 date
和 time
排序。
如果在 24 小时内仅使用 ORDER BY dep_time ASC
进行搜索,我会得到按时间正确排序的正确结果。
场景二
如果在 48 小时或更长时间内仅使用 ORDER BY dep_time ASC
进行搜索,我得到的结果如下
没有按日期排序,当然它只是按时间
排序,所以没用。
如果使用 ORDER BY dep_date ASC, dep_time ASC
在 48 小时或更长时间内进行搜索,我会得到与第一个快照相同的结果;
- 第一个结果按表
供应商
排序,然后按预订
排序,但前 24 小时,然后是接下来的 24 小时 - 然后在每 24 小时内,每个表结果分别按
日期
和时间
排序。
那么无论日期范围如何,如何根据日期
和时间
对两个表的结果进行排序?
最佳答案
使用连接
ORDER BY concat(dep_date,' ',dep_time)` ASC
尝试下面的查询,希望它有效
select * from (SELECT booking.referance_no AS ref_no,
booking.entry_date AS dep_date,
TIME_FORMAT(booking.entry_time,'%H:%i') as dep_time,
booking.first_name AS fname,
booking.last_name AS lname,
booking.mobile AS mobile
FROM booking WHERE $WHERE1
GROUP BY booking.book_id
UNION ALL
SELECT supplier.reference_no AS ref_no,
DATE_FORMAT(supplier.departure_date_time,'%d-%m-%Y') AS dep_date,
TIME_FORMAT(supplier.departure_date_time,'%H:%i') AS dep_time,
supplier.fname AS fname,
supplier.lname AS lname,
supplier_subscribers.mobile AS mobile
FROM supplier WHERE $WHERE2 ) as temp ORDER BY concat(dep_date,' ',dep_time)` ASC
关于php - MySQL 结果 ORDER BY 日期和时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32380953/