2010-11-02 10 views
0

Désolé de déranger à nouveau. J'ai cherché essayé de mon mieux, regardé partout et ne peut toujours pas résoudre le problème. S'il te plait peux-tu aider? - Je ferais de mon mieux pour expliquer le problème.PHP Calculer l'heure de début et de fin à partir d'une liste de mintues avec les ID

Problème: J'ai une liste de fois avec un ID et je veux boucler le temps dans un ID pour obtenir les heures de début et de fin. Voici un exemple:

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 

Ainsi, le résultat de ce qui devrait faire écho:

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" 

Est-ce possible? S'il vous plaît aider. Je suis sur ce depuis le matin. J'ai essayé d'utiliser pour la boucle mais je continue à obtenir des erreurs étranges.

Merci Programmeurs! :)

+0

Qu'ont tu as si loin? – Sjoerd

+1

Postez le code que vous avez essayé. –

+0

Avez-vous déjà une requête? Quels SGBDR utilisez-vous? –

Répondre

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

Cela devrait faire l'affaire.

+0

WOW merci pour la réponse rapide ... Désolé d'être retardé mais comment pourrais-je mettre le start_date dans une variable ... par exemple $ start_date pour que je puisse faire écho dans différents endroits ... – Buki

+0

@ Buki, il semble que tu saches comment faire ça maintenant. Vous devriez marquer ceci comme la réponse acceptée. – Sonny

+0

désolé merci :) – Buki

1

essayez avec ceci. Peut-être que ça peut t'aider. Vous avez juste besoin de changer un peu, je suppose:

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

il vous donnera ce résultat:

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

EDIT: Ajoutez juste ce dont vous avez besoin:

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 merci pour la réponse rapide ... Désolé d'être retardé mais comment pourrais-je mettre le start_date dans une variable ... c'est-à-dire $ start_date afin que je puisse faire écho à différents endroits? – Buki

+0

Woow Merci beaucoup Trix !!!! Encore une chose. J'ai édité votre code abit. Est-ce correct? : – Buki

+0

Woow Merci beaucoup Trix !!!! THATS AMAZING que vous avez formaté l'heure aussi bien. Encore une chose. Comment puis-je mettre l'heure formatée dans une variable. Serait-ce comme: '$ start_date = min (TIME_FORMAT (time_duration, '% h:% i:% s'))'? – Buki