首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要帮助以在我的MySQL表中排序时间和日期列

问需要帮助以在我的MySQL表中排序时间和日期列
EN

Stack Overflow用户
提问于 2021-07-14 06:31:47
回答 1查看 72关注 0票数 2

我想在制定我的查询方面寻求一些帮助,以便我能够实现以下所述的预期产出。我尝试了很多次来实现预期的输出,但是我总是得到实际的输出,如下所示。我使用MySQL作为关系数据库管理系统。顺便说一句,如果这是不可能的,只使用一个查询,请让我知道,以便我可以通知我的团队。谢谢

排序规则:

排序规则的全部内容是按顺序显示每个日期的每一组时间段。例如,9月23-26日显示第一组时间段->下一次显示:9月23-26日显示第二组时间段,如果有任何->等等。

预期输出:

代码语言:javascript
复制
|      Date         | Start_Time | End_Time
|September 23, 2020 | 8:00 AM    | 9:00 AM
|September 24, 2020 | 9:00 AM    | 10:00 AM 
|September 25, 2020 | 8:00 AM    | 9:00 AM 
|September 26, 2020 | 9:00 AM    | 10:30 AM 
|September 23, 2020 | 9:00 AM    | 10:00 AM 

实际输出:

https://i.stack.imgur.com/g9kWV.png

当前代码:

代码语言:javascript
复制
Select DISTINCT timeslot.Timeslot_ID,
timeslot.Date,timeslot.Start_Time,timeslot.End_Time from timeslot
WHERE timeslot.ExamEvent_ID=1 ORDER BY STR_TO_DATE
(CONCAT(timeslot.Start_Time,' - ',timeslot.End_Time), '%l:%i %p - %l:%i %p'), 
STR_TO_DATE (timeslot.Date, '%M %e, %Y')
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-14 10:52:03

使用ROW_NUMBER()窗口函数:

代码语言:javascript
复制
SELECT Timeslot_ID, ExamEvent_ID, Date, Start_Time, End_Time
FROM (
  SELECT *, ROW_NUMBER() OVER (PARTITION BY Date ORDER BY STR_TO_DATE(Start_Time, '%l:%i %p')) rn
  FROM timeslot
) t  
ORDER BY rn, STR_TO_DATE(Date, '%M %e, %Y')

见演示。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68373112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档