如何订购平日周日(0),包括部分周?

时间:2016-06-24 14:20:51

标签: php ajax postgresql

我正在从数据库中读取库的开放时间,所以我得到的回复如下:

{
   "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子句或类似的方法完成相同的操作,例如:Possible to create a query that sorts by day of week?

任何想法都非常感激。

1 个答案:

答案 0 :(得分:0)

我会这样订购:

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