如何排序穿过周日(0)的工作日,包括部分周


How to order weekdays traversing Sunday (0) including partial weeks?

我正在从数据库中读取图书馆的开放时间,所以我得到的结果如下:

{
   "5":{ // library ID
      "4":{ // interval ID
         "statement":"",
         "start_date":"5th Jan 2015",
         "end_date":"1st Mar 2015",
         "hours":[
            {
               "day_of_week":"Sun",
               "opening_time":"12am",
               "closing_time":"12am",
               "is_closed":true,
               "open_24hrs":false
            },
            {
               "day_of_week":"Mon",
               "opening_time":"9am",
               "closing_time":"5pm",
               "is_closed":false,
               "open_24hrs":false
            },
            {
               "day_of_week":"Tue",
               "opening_time":"9am",
               "closing_time":"5pm",
               "is_closed":false,
               "open_24hrs":false
            },

表示每个"正常"开放时间,每个"变化"开放时间也相同,其中间隔可以是一天到七天。(这里我已经将日数预处理为简短的日名)。我通过AJAX/PHP从PostGreSQL获得数据。我的问题是,当间隔可能是一天到几个星期的任何时间(但只有一个星期的小时存储间隔一个星期或更长),并且可以在任何一天开始,例如:星期五,星期六,星期日,星期一长周末(在这种情况下,天的数字是5,6,0,1,所以出来顺序为太阳,星期一,星期五,星期六),我如何才能正确地为变化的日子排序?

我最初的想法是:

  • 检查间隔是否为整周
  • 如果没有,检查星期天是否被穿越
  • 如果没有,则按编号轻松订购
  • 如果遍历星期日,则获取起始日并订购到星期日重置为0(周日),并继续到开始前的最高数字天

但是我想知道这是否都是多余的,我可以使用按子句或类似的顺序来完成相同的任务,就像这样:可能创建一个按星期排序的查询吗?

?

我会这样订购:

ORDER BY interval.start_date, hours.day_of_week, hours.opening_time