2010-11-02 74 views
0

抱歉再次打擾。我已經盡力搜尋,到處尋找,仍然無法解決問題。能否請你幫忙? - 我會盡我所能解釋問題。PHP從ID列表中計算開始時間和結束時間

問題: 我有一個帶有ID的時間列表,我想在一個ID內循環這些時間來獲得開始時間和結束時間。這是一個例子:

time_id   time_duration 

1 2010-10-15 11:15:00 
1 2010-10-15 11:20:00 
1 2010-10-15 11:25:00 
1 2010-10-15 11:30:00 
2 2010-10-15 11:35:00 
2 2010-10-15 11:40:00 
2 2010-10-15 11:45:00 
2 2010-10-15 11:50:00 
2 2010-10-15 11:55:00 
3 2010-10-15 12:00:00 
3 2010-10-15 12:05:00 
4 2010-10-15 12:10:00 
5 2010-10-15 12:15:00 
5 2010-10-15 12:20:00 
5 2010-10-15 12:25:00 

所以這樣的結果應該呼應:

for time_id 1: "Start 11:15 - End 11:30" 
    for time_id 2: "Start 11:35 - End 11:55" 
    for time_id 3: "Start 12:00 - End 12:05" 
    for time_id 4: "Start 12:10 - End 12:10" 
    for time_id 5: "Start 12:15 - End 12:25" 

這可能嗎?請幫忙。自從早上我就一直在這裏。我嘗試使用for循環,但我不斷收到奇怪的錯誤。

感謝編程傢伙! :)

+0

什麼都有你到目前爲止? – Sjoerd 2010-11-02 20:31:18

+1

發佈您嘗試的代碼。 – 2010-11-02 20:31:48

+0

你有查詢嗎?你正在使用哪種RDBMS? – 2010-11-02 20:31:59

回答

2
SELECT 
    time_id, 
    MIN(time_duration) AS start_time, 
    MAX(time_duration) AS end_time 
FROM 
    abc_table 
GROUP BY 
    time_id; 

這應該做的工作。

+0

WOW感謝您的快速回復...對不起,我遲遲沒有將start_date放入變量中...例如$ start_date,以便我可以在不同位置回顯它... – Buki 2010-11-02 21:54:36

+0

@布基,看來你現在知道該怎麼做。您應該將此標記爲已接受的答案。 – Sonny 2010-11-15 17:14:31

+0

對不起,謝謝:) – Buki 2011-02-17 21:39:50

1

試試這個。也許它可以幫助你。你只需要改變一點點我想:

select concat_ws("","for time_id ","",time_id," ",min(time_duration)," - ",max(time_duration)) as result from table1 group by time_id; 

它會給你這樣的結果:

+---------------------------------------------------------+ 
| result             | 
+---------------------------------------------------------+ 
| for time_id 1 2010-10-15 11:15:00 - 2010-10-15 11:30:00 | 
| for time_id 2 2010-10-15 11:35:00 - 2010-10-15 11:55:00 | 
+---------------------------------------------------------+ 

編輯:只需添加你需要的東西:

mysql> select concat_ws("","for time_id ","",time_id," ",min(TIME_FORMAT(time_duration,'%h:%i:%s'))," - ",max(TIME_FORMAT(time_duration,'%h:%i:%s'))) as result, 
    -> DATE_FORMAT(time_duration,'%d-%m-%Y') as date 
    -> from table1 
    -> group by time_id; 


+-----------------------------------+------------+ 
| result       | date  | 
+-----------------------------------+------------+ 
| for time_id 1 11:15:00 - 11:30:00 | 15-10-2010 | 
| for time_id 2 11:35:00 - 11:55:00 | 15-10-2010 | 
+-----------------------------------+------------+ 
+0

WOW感謝您的快速回復...對不起,我遲遲沒有,但我會如何將start_date放入一個變量...即$ start_date,以便我可以在不同的位置回顯它? – Buki 2010-11-02 21:56:19

+0

Woow謝謝soo Trix !!!!還有一件事。我編輯了你的代碼。它是否正確? : – Buki 2010-11-02 22:20:00

+0

Woow謝謝soo Trix !!!!令人驚訝的是,你也格式化了時間。還有一件事。我如何將格式化的時間放入一個變量中。它會是這樣的:'$ start_date = min(TIME_FORMAT(time_duration,'%h:%i:%s'))'? – Buki 2010-11-02 22:26:46

相關問題