2012-06-27 18 views
1

所以我有2個表,一個用戶表和一個約會表。我想要做的就是從數據庫中獲取不存在的時間。MySQL PHP從數據庫表獲取反向時間

我會舉幾個例子,因爲這可能沒有任何意義,下面是我的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  | 
+----------+--------------------+-------------------+---------------------+ 

我想回去了是空的或反時限,因此,例如,如果我只是做了比爾月16日的話,我想回的是:

+--------------+------------+ 
| TimeFrom | TimeTo | 
+--------------+------------+ 
| 00:00  | 10:00 | 
| 11:00  | 14:30 | 
| 16:00  | 19:00 | 
| 22:00  | 23:59 | 
+--------------+------------+ 

如果我是在六月十六日爲兩個用戶做的話,我會得到類似的東西:

+--------------+------------+ 
| TimeFrom | TimeTo | 
+--------------+------------+ 
| 00:00  | 07:00 | 
| 11:30  | 14:30 | 
| 16:30  | 19:00 | 
| 22:00  | 23:59 | 
+--------------+------------+ 

或者儘可能地接近。我不知道是否有一種好的方法可以在MySQL中完成,或者我將不得不使用PHP將時間轉換爲其反轉。

在此先感謝。

+0

您爲此編寫的代碼。請在此處填寫。 – Jalpesh

+0

你可以參考這個鏈接開始http://stackoverflow.com/questions/7222565/selecting-available-timeslots-for-a-specific-date –

+0

我不認爲你可以做到這一點mysql直接除了可能存儲的函數 –

回答

1

據我所知,在mysql中沒有直接處理這個功能的功能,但是在PHP中處理起來非常簡單。

如果您沒有任何事件從一天到另一天,那麼您所需要做的就是將所有時間按順序放入數組中(開始,結束,開始,結束,開始,結束...),然後array_unshift '00:00'開始,array_push '23:59'結束,然後array_chunk它兩個,你會得到你想要的輸出。

如果您確實有事件從一天到另一天,那麼您採用相同的方法,但使用時間戳,將00:00替換爲第一天開始的時間戳,將23:59替換爲時間戳最後一天結束。

抱歉沒有發佈代碼,但我覺得這種方法比在這種情況下簡單地提供代碼更好地解釋。

+0

這是一個非常好的主意,但我無法理解這將如何解決所有用戶的問題。當不同用戶的時間重疊時,我怎樣才能把所有的時間結合在一起? – Sean

相關問題