gpt4 book ai didi

php - MySQL 结果 ORDER BY 日期和时间

转载 作者:行者123 更新时间:2023-11-29 22:03:34 25 4
gpt4 key购买 nike

我有这样的查询

"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 我得到这样的结果

out of order

检查上面快照中的第 6364 行,结果按日期排序,但也不按时间排序第一个结果显示从 supplier 表到第 63 行,然后从 64 从表 booking 开始,结果就像结果按每个表排序(首先是 supplier 表,然后是 booking 表),然后按 datetime 排序。

如果在 24 小时内仅使用 ORDER BY dep_time ASC 进行搜索,我会得到按时间正确排序的正确结果。

场景二

如果在 48 小时或更长时间内仅使用 ORDER BY dep_time ASC 进行搜索,我得到的结果如下

Not in-order 2

没有按日期排序,当然它只是按时间排序,所以没用。

如果使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com