我无法创建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
答案 0 :(得分:0)
我不完全确定你在这里要求的是什么。所以我会提出一些意见。
首先,根据任何DATE
,TIMESTAMP
或DATETIME
值,例如名称为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日期算法的优势。