IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

[mysql] Aide sur requete (date)


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 157
    Points : 68
    Points
    68
    Par défaut [mysql] Aide sur requete (date)
    Bonjour,
    j'ai une table avec un champ date au format datetime (aaaa-mm-jj hh:mm:ss)
    et j'aimerais faire une requete du genre:
    sort moi tous les enregistrements du lundi au vendredi de 9h à 12h30

    vous faites ça comment?
    merci pour votre aide.

  2. #2
    Membre régulier Avatar de abir84
    Inscrit en
    Mars 2007
    Messages
    214
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2007
    Messages : 214
    Points : 116
    Points
    116
    Par défaut
    Citation Envoyé par cassy Voir le message
    Bonjour,
    j'ai une table avec un champ date au format datetime (aaaa-mm-jj hh:mm:ss)
    et j'aimerais faire une requete du genre:
    sort moi tous les enregistrements du lundi au vendredi de 9h à 12h30

    vous faites ça comment?
    merci pour votre aide.
    bonjour
    essaye ça, je me suis inspiré de l'assistant d'access et ça marche pour ma table date(N°, id, date):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT date.N°, date.date
    FROM [date]
    WHERE (((date.date)<=#12/12/2007 10:23#) AND ((date.date)>=#2/01/2003 13:22#));

  3. #3
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 034
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 034
    Points : 23 779
    Points
    23 779
    Par défaut
    Bonjour,

    Juste une petite demande de précision : ce sont tous les enregistrements de 9h à 12h30 pour chaque jour de ta table qui est un lundi, un mardi, un mercredi, un jeudi ou un vendredi que tu veux ?
    Où alors ce sont les enregistrement entre le lundi 9h et le vendredi 12h30 ?
    Et ça vaut pour toutes les semaines dans la table ?

    Parce selon la façon dont on comprend ta demande, ça change passablement les conditions dans la requête

    ced

  4. #4
    Membre régulier
    Inscrit en
    Mai 2007
    Messages
    183
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 183
    Points : 121
    Points
    121
    Par défaut
    J'ai une fonction PHP qui s'appuie sur un test SQL sur lequel tu pourras t'inspirer.
    Petite description de ce que fait la fonction avant de présenter le code SQL :

    function bdd_is_between_times ($arg_begintime,$arg_endtime)

    $arg_begintime: Time début (format hh:mm:ss),
    $arg_endtime: Time Fin

    Cette fonction indique si l'on se trouve actuellement entre 2 heures :

    Elle tient compte de l'ordre des paramètres.
    Si la première heure est supérieure à la deuxième, la fonction en deduit que la deuxieme heure se situe sur le jour suivant.

    précision à la seconde

    retourne TRUE si on est dans la période
    sinon FALSE

    Pour plus de lisibilité dans le code suivant, on peut remplacer ".$arg_begintime." par 22:00:00
    et ".$arg_endtime." par 01:00:00 par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    SELECT CONCAT(DATE(NOW()),' ".$arg_begintime."') INTO @begin_period;
     
    SELECT CONCAT(DATE(NOW()),' ".$arg_endtime."') INTO @end_period;
     
    SELECT IF
    (
      (SELECT (TIMESTAMPDIFF(SECOND,@begin_period,@end_period)<0)),
      DATE_ADD(@end_period, INTERVAL + 1 DAY),
      @end_period
    )
    INTO @end_period;
     
    SELECT
    (
        (TIMESTAMPDIFF(SECOND,@begin_period,NOW())>=0) 
         AND
        (TIMESTAMPDIFF(SECOND,@end_period,NOW())<=0)
     );
    Dans ton cas, c'est la dernière partie qui te sera utile.
    Remplace NOW() par le champs Datetime a tester et c bon.
    Est ce que ça répond a tes besoins ?

  5. #5
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 157
    Points : 68
    Points
    68
    Par défaut
    merci pour vos reponses, j'ai fais avec DATE_FORMAT:
    DATE_FORMAT( date_end, '%w' ) NOT IN ( 0, 6 )
    DATE_FORMAT( date_end, '%T' ) BETWEEN '09:00:00' AND '12:30:00'

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Aide sur requete access
    Par Al soltani dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 02/03/2006, 11h58
  2. Besoin d'aide sur requetes imbriquées simples
    Par Kyti dans le forum Langage SQL
    Réponses: 2
    Dernier message: 01/03/2006, 10h52
  3. Aide sur requete PHP vers MySQL
    Par pounie dans le forum Requêtes
    Réponses: 4
    Dernier message: 19/02/2006, 15h12
  4. aide sur requete mysql
    Par digger dans le forum Langage SQL
    Réponses: 8
    Dernier message: 14/01/2006, 10h54
  5. [MySQL] aide sur une requete
    Par dj-julio dans le forum Langage SQL
    Réponses: 5
    Dernier message: 12/01/2006, 14h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo