mysql 两列排序_SQL:如何从两列中选择日期数据并使用两列对其进行排序

本文介绍了一个PHP/MySQL查询案例,该查询用于找出指定日期区间内的所有预订记录,并根据开始日期和结束日期对结果进行排序。文章还讨论了如何处理同一天内有多条预订记录的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我正在构建一个PHP / MySQL查询,该查询列出了指定时间段内(例如一天)数据库中的所有预留 . 所有预订都有开始日期和结束日期 . 我需要列出它们,以便按升序显示它们1)start_date / end_date =在指定的时间段2之间)start_date和end_date可以在句点内,因此它应该有1个结果用于start_date而另一个用于end_date

SELECT *

FROM `reservations`

WHERE `start_date` BETWEEN '2017-01-04 00:00:00' AND '2017-01-04 23:59:59'

OR `end_date` BETWEEN '2017-01-04 00:00:00' AND '2017-01-04 23:59:00'

order by start_date, end_date

因此,我需要帮助根据 two columns 对结果进行排序,并且对于在指定时间段内同时具有start_date和end_date的行具有 duplicate result .

UPDATE

现在我到目前为止已经得到了正确的结果,并且行根据日期(start_date / end_date)按升序排序 . 但是如果我有人在同一天检查输入(即重复行),我当前的查询会背对背地列出行,尽管我希望根据检出时间排序第二行 .

这是我到目前为止所拥有的:

select * from(SELECT id,start_date,end_date FROM reservations WHERE start_date BETWEEN'2017-01-03 00:00:00'EN'2017-01-03 23:59:59'OR_ndatedate BETWEEN'2017-01-03 00:00:00'AND'2017-01-03 23:59:00'union all SELECT id,start_date,end_date FROM reservations WHERE start_date BETWEEN'2017-01-03 00:00:00'EN'2017-01- 03 23:59:59'AND end_date BETWEEN'2017-01-03 00:00:00'''2017-01-03 23:59:00')按顺序排列WHEN start_date BETWEEN'2017-01-03 00:00:00'和'2017-01-03 23:59:59'那么start_date ELSE end_date END ASC

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值