基于日期和时间的MySQL随机数记录时间

时间:2018-06-04 22:07:02

标签: mysql mysql-5.7

我正在尝试根据课程的日期和时间选择随机记录。如果一个班级当天有超过1个时段,我想选择那个,然后移动到第二天,并为每一天做同样的事情。预定最多一周。我知道如何在MySQL中使用RAND()获取随机记录,但我怎样才能使用相同的代码每天使用?我环顾四周,发现问题很接近但没有日期和时间。

数据示例:

Classroom  Start_Date Start_Time
        1     6/6/18    1700
        1     6/6/18    1800
        2     6/7/18    1200
        2     6/7/18    1300
        2     6/7/18    1400

每个教室每天只有1条记录。到目前为止我有这个,我很确定我需要创建一个上一个和下一个记录。但无法弄清楚如何让它发挥作用。我到目前为止的代码如下。在此先感谢您的帮助。

MySQL代码:

         SELECT CLASSROOM, n,start_date, start_hour
         FROM
          (SELECT @prev:='', @n := 0) init
        JOIN
          (select @n := if(2a.CLASSROOM != @prev, 1, @n + 1) AS n,
                @prev := 2a.CLASSROOM
       , date_format(2a.START_DT_TIME, '%m/%d/%Y') as start_date
       , 2a.CLASSROOM + CASE WHEN 1a.TIME_ZONE_KEY = 'America/Chicago'        THEN Hour(CONVERT_TZ(2a.START_DT_TIME,'GMT','America/Chicago'))
             WHEN 1a.TIME_ZONE_KEY= 'America/Denver' THEN Hour(CONVERT_TZ(2a.START_DT_TIME,'GMT','America/Denver'))
             WHEN 1a.TIME_ZONE_KEY= 'America/Los_Angeles'THEN hour(CONVERT_TZ(2a.START_DT_TIME,'GMT','America/Los_Angeles'))
             WHEN 1a.TIME_ZONE_KEY = 'America/New_York'THEN hour(CONVERT_TZ(2a.START_DT_TIME,'GMT','America/New_York'))
             WHEN 1a.TIME_ZONE_KEY = 'America/Phoenix'THEN hour(CONVERT_TZ(2a.START_DT_TIME,'GMT','America/Phoenix'))
             ELSE Null 
             END AS start_hour
      from XX_WELCOME_SESSION_0 1a
       JOIN XX_WELCOME_SESSION_0_CLASS 2a
        ON 1a.ACCOUNT_ID=2a.ACCOUNT_ID
      where 2a.START_DT_TIME > NOW()
    ORDER BY 2a.CLASSROOM
    ) x
  WHERE n <=1
  ORDER BY CLASSROOM, n
 ;

0 个答案:

没有答案