所以我有 2 个表,一个用户表和一个约会表。我希望能够做的是从数据库中获取不存在的时间。
我将举几个例子,因为这可能没有任何意义,下面是我的 2 个表格。
+-----------------+
| Users |
+-----------------+
| ID | Name |
+------+----------+
| 1 | Bill |
| 2 | John |
+------+----------+
+-------------------------------------------------------------------------+
| Appointments |
+----------+--------------------+-------------------+---------------------+
| UserID | DateTimeFrom | DateTimeTo | AppointmentName |
+----------+--------------------+-------------------+---------------------+
| 1 | 2012-06-16 10:00 | 2012-06-16 11:00 | Hair Cut |
| 1 | 2012-06-16 14:30 | 2012-06-16 16:00 | Work |
| 1 | 2012-06-16 19:00 | 2012-06-16 22:00 | Dinner and Drinks |
| 2 | 2012-06-16 07:00 | 2012-06-16 10:30 | Travelling |
| 2 | 2012-06-16 16:00 | 2012-06-16 16:30 | Dentist |
+----------+--------------------+-------------------+---------------------+
我想要返回的是空时间或倒数时间,例如,如果我只是在 6 月 16 日为 Bill 做这件事,那么我想要返回的是:
+--------------+------------+
| TimeFrom | TimeTo |
+--------------+------------+
| 00:00 | 10:00 |
| 11:00 | 14:30 |
| 16:00 | 19:00 |
| 22:00 | 23:59 |
+--------------+------------+
如果我在 6 月 16 日为两个用户都这样做,那么我会得到类似的东西:
+--------------+------------+
| TimeFrom | TimeTo |
+--------------+------------+
| 00:00 | 07:00 |
| 11:30 | 14:30 |
| 16:30 | 19:00 |
| 22:00 | 23:59 |
+--------------+------------+
或者尽可能接近的东西。我不知道在 MySQL 中是否有好的方法,或者我是否必须使用 PHP 将时间转换为它们的倒数。
提前致谢。
最佳答案
据我所知,在 mysql 中没有直接处理此问题的功能,但是在 PHP 中很容易处理。
如果您没有从一天到另一天的任何事件,那么您需要做的就是按顺序将所有时间放入一个数组中(开始、结束、开始、结束、开始、结束。 ..) 然后 array_unshift '00:00' 到开头, array_push '23:59' 到结尾,然后 array_chunk 两个,你就会得到你想要的输出。
如果您确实有从一天到另一天的事件,那么您可以采用相同的方法,但使用时间戳,将 00:00 替换为第一天开始的时间戳,将 23:59 替换为第一天开始的时间戳最后一天结束。
很抱歉没有发布代码,但我觉得这种方法比在这种情况下简单地交付代码来更好地解释。
关于php - MySQL PHP 从数据库表中获取倒数时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11226073/