2008-10-14 10 views
4

Quelle est la meilleure façon de compter le temps entre deux valeurs datetime récupérées à partir de MySQL lorsque j'ai besoin de compter uniquement le temps entre les heures 08: 00: 00-16: 00 : 00. Par exemple, si j'ai des valeurs 2008-10-13 18:00:00 et 2008-10-14 10:00:00, la différence de temps devrait être 02:00:00. Puis-je le faire avec SQL ou quelle est la meilleure façon de le faire? Je construis un site web et utilise PHP.SQL (?): Comptage du temps entre deux valeurs datetime

Merci pour vos réponses.

EDIT: La chose exacte est que j'essaie de compter le temps qu'un "ticket" a été dans un état spécifique pendant les heures de travail. Le temps pourrait être comme quelques semaines.

EDIT2: Je n'ai aucun problème à compter le décalage horaire réel, mais soustraire ce temps d'arrêt, 00: 00: 00-08: 00: 00 et 16: 00: 00-00: 00: 00 par jour.

-Samuli

Répondre

10

La fonction TIMEDIFF

TIMEDIFF() Expr1 - Expr2 exprimée en valeur temporelle. expr1 et expr2 sont des expressions du temps ou de la date et du temps , mais les deux doivent être du même type que .

mysql> SELECT TIMEDIFF('2000:01:01 00:00:00', 
    ->     '2000:01:01 00:00:00.000001'); 
     -> '-00:00:00.000001' 
mysql> SELECT TIMEDIFF('2008-12-31 23:59:59.000001', 
    ->     '2008-12-30 01:01:01.000002'); 
     -> '46:58:57.999999' 
1

Je pense que vous devez calculer la différence dans votre propre code au lieu d'utiliser une phrase SQL plus complexe car:

  • Ce calcul semble faire partie de votre logique métier. Il semble plus facile à maintenir si vous l'intégrez au reste de votre code d'entreprise.
  • La base de données est souvent le goulot d'étranglement, ne le chargez donc pas plus que nécessaire.
Questions connexes