带有时间表

时间:2016-07-26 22:41:01

标签: mysql timetable

我无法创建Mysql查询,根据指定的当前时间和时间表给出一个id列表。我有一张这样的桌子:

ID - int
0f - time (monday from)
0t - time (monday till)
1f - time (tuesday from)
1t - time (tuesday till)
2f - time (wednesday from)
2t - time (wednesday till)
3f - time (thursday from)
3t - time (thursday till)
4f - time (friday from)
4t - time (friday till)
5f - time (saturday from)
5t - time (saturday till)
6f - time (sunday from)
6t - time (sunday till)

问题开始于"直到"价值大于24小时,然后变得低于"来自"值。 例如,它是凌晨1点,我需要选择现在工作的所有ID,其中一个工作时间从上午10点到凌晨2点。

UPD 这是我的表格中包含实际数据的示例:

ID  Name    f0  t0  f1  t1  f2  t2  f3  t3  f4  t4  f5  t5  f6  t6
23  test1   10:00:00    23:00:00    10:00:00    23:00:00    10:00:00    23:00:00    10:00:00    23:00:00    10:00:00    01:00:00    11:00:00    01:00:00    11:00:00    23:00:00
24  test2   12:00:00    01:00:00    12:00:00    01:00:00    12:00:00    01:00:00    12:00:00    01:00:00    12:00:00    02:00:00    12:00:00    02:00:00    12:00:00    01:00:00
25  test3   12:00:00    01:00:00    12:00:00    01:00:00    12:00:00    01:00:00    12:00:00    01:00:00    12:00:00    02:00:00    12:00:00    02:00:00    12:00:00    01:00:00
27  test4   11:00:00    23:00:00    11:00:00    23:00:00    11:00:00    23:00:00    11:00:00    23:00:00    11:00:00    23:00:00    11:00:00    23:00:00    11:00:00    23:00:00
28  test5   10:00:00    23:00:00    10:00:00    23:00:00    10:00:00    23:00:00    10:00:00    23:00:00    10:00:00    23:00:00    10:00:00    23:00:00    10:00:00    23:00:00
29  test6   09:00:00    22:00:00    09:00:00    22:00:00    09:00:00    22:00:00    09:00:00    22:00:00    09:00:00    22:00:00    10:00:00    23:00:00    10:00:00    23:00:00
30  test7   12:00:00    01:00:00    12:00:00    01:00:00    12:00:00    01:00:00    12:00:00    01:00:00    12:00:00    03:00:00    12:00:00    03:00:00    12:00:00    01:00:00
32  test8   09:00:00    22:00:00    09:00:00    22:00:00    09:00:00    22:00:00    09:00:00    22:00:00    09:00:00    22:00:00    10:00:00    22:00:00    10:00:00    22:00:00
33  test9   11:00:00    22:00:00    11:00:00    22:00:00    11:00:00    22:00:00    11:00:00    22:00:00    11:00:00    22:00:00    11:00:00    22:00:00    11:00:00    22:00:00
34  test10  09:00:00    22:00:00    09:00:00    22:00:00    09:00:00    22:00:00    09:00:00    22:00:00    09:00:00    22:00:00    09:00:00    22:00:00    09:00:00    22:00:00
35  test11  18:00:00    02:00:00    18:00:00    02:00:00    18:00:00    02:00:00    18:00:00    02:00:00    18:00:00    04:00:00    18:00:00    04:00:00    18:00:00    02:00:00

我需要编写MYSQL查询来选择现在随时打开的ID

1 个答案:

答案 0 :(得分:0)

我不完全确定你在这里要求的是什么。所以我会提出一些意见。

首先,根据任何DATETIMESTAMPDATETIME值,例如名称为datestamp的列,此公式将精确地给出星期一的午夜那个星期。 (这个公式中有一些魔力,因为MySQL的DAY 0恰好是星期天。)

 FROM_DAYS(TO_DAYS(datestamp) -MOD(TO_DAYS(datestamp) -2, 7))

然后,您可以添加任意数小时。因此,例如,如果您在周三23:00开始工作8小时,那么它将在本周开始后的71(24 + 24 + 23)小时开始。所以它始于

 FROM_DAYS(TO_DAYS(NOW()) -MOD(TO_DAYS(NOW()) -2, 7)) 
          + INTERVAL 71 HOUR

本周八小时后,这一转变的结束是在这个时候。

FROM_DAYS(TO_DAYS(NOW()) -MOD(TO_DAYS(NOW()) -2, 7))
          + INTERVAL 71 HOUR
          + INTERVAL 8 HOUR

所以,也许( ??? )你想在本周开始后的几小时内代表你的“星期四至今”种类的物品。

这只是一种方法,可以在dbms中表示重复的每周事件,同时仍然可以获得MySQL日期算法的优势。