Partage
  • Partager sur Facebook
  • Partager sur Twitter

Requête selon dates et heures

Sujet résolu
    16 janvier 2019 à 9:48:01

    Bonjour à toutes et à tous

    je viens vers vous car j'ai un petite problème de requête SQL/PHP

    Celle que j'ai faite fonctionne mais pas comme je veux, je me fais des nœuds au cerveau, je n'y parvient pas, je pense que c'est un problème de logique.

    voici ma requête :

    $select = 'SELECT *FROM jdb 
    WHERE
    (date_jour=NOW() AND horaire<"23:59:00") 
    or
    (date_jour=DATE_SUB(NOW(), INTERVAL 1 DAY) AND horaire>"08:00:00") 
    ORDER BY inter ASC' ;


    et en fait ce que j'aimerai :

    condition 1:

    nous somme le 16/01/2019 : jusqu'à 7:59:00 j'aimerai que ma requête affiche toutes les saisies du 

    15/01/2019 8:00:00 au 16/01/2019 7:59:00

    condition 2:

    si nous sommes le 16/01/2019 8:00:00: alors j'affiche les saisies du 16/01/2019 jusqu’à 23:59:00

    comme à minuit on change de jour, je repasse dans la condition 1


    Voila espérant être clair dans mes explications


    Merci de votre aide

    • Partager sur Facebook
    • Partager sur Twitter
      16 janvier 2019 à 11:32:12

      Bonjour,

      Mauvais forum

      Le sujet est déplacé de la section PHP vers la section Base de données

      • Partager sur Facebook
      • Partager sur Twitter

      Pas d'aide concernant le code par MP, le forum est là pour ça :)

        16 janvier 2019 à 11:36:36

        Bonjour,

        Et tu tiens vraiment à faire ça en SQL ? Parce que si tu as mis ça dans le forum Php, c'est que tu pourrais gérer cette condition en Php, non ?

        • Partager sur Facebook
        • Partager sur Twitter
          16 janvier 2019 à 13:15:21

          j'aimerai filtrer directement dans ma requête

          • Partager sur Facebook
          • Partager sur Twitter
            16 janvier 2019 à 14:14:44

            Tu es sûr de tes horaires ? Dans le cas n°1 ça va de 8 heures à 8 heures (intervalle de 24 heures), mais dans le cas n°2 ça va de huit heures à minuit (intervalle de 16 heures). Et sans ajouter 59 secondes à 23:59:00, tu risques de rater des entrées.

            -
            Edité par Laneya 16 janvier 2019 à 14:15:59

            • Partager sur Facebook
            • Partager sur Twitter
              16 janvier 2019 à 14:52:59

              Bon, ben peut-être que quelqu'un aura une solution, pour moi c'est deux requêtes différentes, donc bien sûr c'est toujours faisable avec un UNION.

              Ou alors il faudrait rajouter HOUR( NOW())<8 ou HOUR( NOW())>=8 dans chaque condition.

              -
              Edité par philodick 16 janvier 2019 à 15:07:44

              • Partager sur Facebook
              • Partager sur Twitter
                16 janvier 2019 à 18:55:17

                Oui je suis sur des horaires et oui pour les 59 secondes :)

                c'est l’emboîtement des conditions avec l'heure vraie avant 7h59,59 et apres 8 h

                • Partager sur Facebook
                • Partager sur Twitter
                  16 janvier 2019 à 19:06:10

                  et donc tu as essayé avec HOUR( NOW())<8 ou HOUR( NOW())>=8 dans chaque condition ?
                  • Partager sur Facebook
                  • Partager sur Twitter
                    16 janvier 2019 à 22:28:32

                    Rebonsoir a tous

                    jai fais ceci et qui a l'air de fonctionner il faut que j'attende minuit pour la seconde condition lol

                    if (localtime()>="08:00:00")   // si heure actuell >= a 8h
                    // selectionne les entrees de la date du jour a partir de 8h
                    $select = '	SELECT * FROM jdb 
                    			WHERE (date_jour=NOW() AND horaire>="08:00:00")
                    			ORDER BY inter ASC'; 	
                    						
                    else if (localtime()<"08:00:00")   // si heure actuell < a 8h
                    // selectionne les entrees de la date du jour avant 8h ainsi que ceux de la veille a partir de 8h
                    $select = '	SELECT * FROM jdb 
                    			WHERE (date_jour=NOW() AND horaire<"08:00:00" and (date_jour=DATE_SUB(NOW(), INTERVAL 1 DAY) AND horaire>="08:00:00")))
                    			ORDER BY inter ASC' ; 

                    -------------------------------------------------------------------------------------------------------------------

                    Bon çà marche pas

                    Quelqu'un peut venir a mon secours

                    si je fais ca :

                    if($heure <"16:00:00")
                    {
                    $select = '	SELECT * FROM jdb 
                    			 WHERE (date_jour = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY) AND horaire >"08:00:00")'; 
                    			

                    là avant 16h il me met bien mes enregistrements horodaté de la veille a partir de 8h

                    si je fais ca :

                    if($heure <"16:00:00")
                    {
                    $select = '	SELECT * FROM jdb 
                    			WHERE date_jour= NOW() AND horaire <"08:00:00"
                    			ORDER BY inter ASC' ;


                    là avant 16h il me met bien mes enregistrements horodaté du jour jusqu'à 8h00

                    Le truc c'est que individuellement mes deux requêtes fonctionnent mai j'aimerait assembler les deux

                    pour que avant 16h

                    cela affiche les enregistrement de la veille de 8h a la date du jour avant 8h

                    merci a vous

                    -
                    Edité par ChristopheLeMeil 17 janvier 2019 à 15:29:00

                    • Partager sur Facebook
                    • Partager sur Twitter
                      17 janvier 2019 à 18:00:52

                      Bonjour,

                      Si j'essaye de reformuler ta demande.

                      de 0h (inclus) à 8h (exclus) : tu veux la liste des données créées entre 8h la veille et maintenant

                      de 8h (inclus) à 24h (exclus) : tu veux la liste des données créées sur la date du jour

                      C'est bien cela ? (et c'est 8h ou 16h ? tu as changé entre temps ...)

                      Si oui, je suis plutôt de l'avis de Philodick, à savoir que le plus simple c'est quand même de faire ton test côté applicatif et d'y décider quelle requête exécuter ...

                      Si vraiment tu veux faire du SQL il faut un IF (ou un CASE selon tes goûts) dans ta clause WHERE :

                      SELECT *
                      FROM jdb
                      WHERE
                      	IF(
                      		CURTIME() > '08:00',
                      		date_jour = CURDATE() AND horaire >= '08:00',
                      		CONCAT( date_jour, ' ', horaire ) >= CONCAT( CURDATE()-INTERVAL 1 DAY, ' 08:00' )
                      	)

                      Après cela aurait été bien d'utiliser un type DATETIME au lieu d'éclater date et heure ... non ?

                      -
                      Edité par Benzouye 18 janvier 2019 à 14:52:30

                      • Partager sur Facebook
                      • Partager sur Twitter
                      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                        17 janvier 2019 à 19:37:37

                        Bon çà marche pas

                        Quelqu'un peut venir a mon secours

                        si je fais ca :

                        if($heure <"16:00:00")
                        {
                        $select = '	SELECT * FROM jdb 
                        			 WHERE (date_jour = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY) AND horaire >"08:00:00")'; 
                        			

                        là avant 16h il me met bien mes enregistrements horodaté de la veille a partir de 8h

                        si je fais ca :

                        if($heure <"16:00:00")
                        {
                        $select = '	SELECT * FROM jdb 
                        			WHERE date_jour= NOW() AND horaire <"08:00:00"
                        			ORDER BY inter ASC' ;


                        là avant 16h il me met bien mes enregistrements horodaté du jour jusqu'à 8h00

                        Le truc c'est que individuellement mes deux requêtes fonctionnent mai j'aimerait assembler les deux

                        pour que avant 16h

                        cela affiche les enregistrement de la veille a de 8h a la date du jour avant 8h

                        merci a vous

                        • Partager sur Facebook
                        • Partager sur Twitter
                          17 janvier 2019 à 19:40:17

                          philodick a écrit:

                          et donc tu as essayé avec HOUR( NOW())<8 ou HOUR( NOW())>=8 dans chaque condition ?


                          On veut bien t'aider mais si ne testes pas...
                          • Partager sur Facebook
                          • Partager sur Twitter
                            17 janvier 2019 à 22:26:53

                            Le HOUR(NOW) ne correspondait pas 

                            merci encore.

                            J'ai résolu mon problème comme suit 

                            //Gestion de l'affichage des enregistrements selon l'heure
                            
                            $heure = date("H:i");
                            
                            if($heure <"07:59:00")
                            {
                            $select = '	SELECT * FROM jdb 
                            			WHERE (date_jour = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY) AND horaire >="08:00:00") OR (date_jour = NOW() AND horaire <"08:00:00")';			
                            }
                            else
                            {
                            $select = '	SELECT * FROM jdb 
                            			WHERE date_jour= NOW() AND horaire >="08:00:00"
                            			ORDER BY inter ASC' ;
                            }

                            Encore merci à tous de vos réponses

                            -
                            Edité par ChristopheLeMeil 17 janvier 2019 à 22:27:37

                            • Partager sur Facebook
                            • Partager sur Twitter
                              18 janvier 2019 à 14:52:36

                              As-tu pu tester ma solution proposée plus haut ?

                              Selon moi, si j'ai bien compris ton besoin, cela fonctionne ...

                              • Partager sur Facebook
                              • Partager sur Twitter
                              Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL

                              Requête selon dates et heures

                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                              • Editeur
                              • Markdown