2012-10-11 2 views
2

J'ai plusieurs valeurs de date et de données mysql "datetime". Je dois retourner le nombre total de la période donnée.Obtenir le compte de plusieurs fois les intervalles entre deux intervalles de temps mysql donnés

Ex:

In time    Out Time 
2012-02-02 10:00  2012-02-02 12:00 
2012-02-02 09:00  2012-02-02 14:00 
2012-02-02 10:00  2012-02-02 11:00 

Je dois obtenir tout comme de 2012-02-02 10:00 à 2012-02-02 11:00

+0

Référence du livre: Richard T. Snodgrass. Développement d'applications orientées temps dans SQL. Morgan-Kaufmann, 1999. –

+0

Merci pour votre commentaire – DEVEX

Répondre

1

écrire cette requête

select count(*) from table name where `In time` <= '2012-02-02 10:00' and `Out Time` >= '2012-02-02 11:00' 

il vous donnera compter 3

+0

Merci beaucoup je l'ai eu et a ajouté pour mon système de réservation – DEVEX

+0

@eduLanka bienvenue :) –

+0

Enfin j'ai utilisé, SELECT vvvvv DE yyyyyyy WHERE (start_time> = '2012-10-02 10:00:00' AND start_time <'2012-10-02 13:00:00') OR (fin_demain> '2012-10-02 10:00:00' AND end_time <= '2012-10-02 13:00:00') OR (heure de début <'2012-10-02 10:00:00' ET heure de fin> '2012-10-02 13:00:00') ET booking_type = 'XXXXX' – DEVEX

2

Je suppose que vous voulez le nombre d'éléments pour lesquels une partie de la période In time à Out time correspond à votre période de recherche ou chevauche celle-ci. D'abord, examinons de façon exhaustive ce que signifie un "chevauchement" dans les dates. Un chevauchement est l'une des conditions suivantes:

 
       Start1      End1 
--------------------------------------------------------------------------------- 
Start2      End2 
Start2              End2 
          Start2       End2 

Et n'est pas l'une des conditions suivantes:

 
       Start1      End1 
--------------------------------------------------------------------------------- 
Start2 End2 
                 Start2 End2 

Si vous regardez attentivement, vous remarquerez Start2 < End1 AND End2 > Start1 définit cette relation, donc cela deviendra votre clause WHERE.


Par conséquent, vous devriez essayer ce qui suit:

SELECT COUNT(*) 
FROM myTable 
WHERE '2012-02-02 10:00:00' <= `Out Time` 
AND '2012-02-02 11:00:00' >= `In Time` 
+0

Merci pour votre réponse – DEVEX

Questions connexes