[英]MySQL PHP Get the inverse times from a database table
所以我有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將其減2,您將得到想要的輸出。
如果確實發生了從一天到另一天的事件,則可以使用相同的方法,但是要使用時間戳,第一天開始時將時間戳00:00替換為時間戳,結束時將時間戳23:59替換為時間戳。最后一天。
很抱歉沒有發布代碼,但是我覺得這種方法比在這種情況下簡單地交付代碼要好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.