2012-06-27 3 views
1

그래서 2 개의 테이블, 사용자 테이블 및 약속 테이블이 있습니다. 내가 할 수 있기를 원하는 것은 존재하지 않는 데이터베이스에서 시간을 빼내는 것입니다.MySQL PHP 데이터베이스 테이블에서 역 시간 얻기

다음은 제 2 테이블에 대한 이해를 돕기위한 몇 가지 예입니다.

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

: 난 그냥 돌려 원하는 것을 다음 16 6 월 빌을 위해 그 일을 한 경우, 예를 들어, 그래서

+-----------------+ 
|  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 6 월 사용자 모두를 위해 그 일을 한 경우 그리고 내가 좋아하는 뭔가를 얻을 것입니다 :

+--------------+------------+ 
| 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

관련 문제