簡體   English   中英

MySQL PHP從數據庫表獲取倒數時間

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM