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

Requêtes et SQL. Discussion :

date j et j+1


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 139
    Points : 61
    Points
    61
    Par défaut date j et j+1
    Bonjour à tous
    Je voudrai faire une requête qui me permet d’afficher les enregistrements qui ont eu lieu dans une journée, en sachant que la journée administrative commence le jour J à 15h et fini le jour J+1 à 4h
    J’ai déjà un requête mais elle fonctionne dur les horaires des deux journées.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Clients.[Code client], Commandes.[Code client], Clients.Prenom, Commandes.Journee, Commandes.[Date commande], Commandes.Heure
    FROM Clients INNER JOIN Commandes ON Clients.[Code client] = Commandes.[Code client]
    WHERE (((Commandes.Journee) Between Date()-1 And Date()));

    Journée commande est la journée qui commence à 15h et finit le lendemain à 4h

    Date commande est la journée date()

    Merci d’avance
    Bob

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 66
    Points : 67
    Points
    67
    Par défaut
    Salut,

    Je suppose que entre 04:00:00 et 15:00:00 il n'y a pas de saisis ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 66
    Points : 67
    Points
    67
    Par défaut
    Tiens, j'ai pas le temps d'expliquer mais je te mets le fichier avec la solution.

    Si tu as des questions n'hésites pas

    Cordialement.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 139
    Points : 61
    Points
    61
    Par défaut
    Salut nig95 et merci pour ta réponse, mais j'ai un petit problème pour adapter ta solution.
    Je ne sais donc pas si ça fonctionne.
    Je vais essayer de joindre un exemple plus expressif si c'est possible
    Merci Bob

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 139
    Points : 61
    Points
    61
    Par défaut
    nirG95 cette fois je l'ai bien écrit, excuse moi pour la faute de frappe.
    je ne peux pas joindre le fichier exemple access il est trop lourd 1,26mo, et il me reste un espace de 300ko.
    Si tu as une solution donnes la moi.
    A plus

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 139
    Points : 61
    Points
    61
    Par défaut
    Voilà j'ai pu compresser mon fichier avec allzip.
    Dis moi ce que tu en penses
    A plus

  7. #7
    Membre chevronné
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Points : 2 178
    Points
    2 178
    Par défaut
    la condition devrait être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WHERE ((([Date commande]+[Heure])>=[Date1]-1+CVDate("15:00") And ([Date commande]+[Heure])<=[Date1]+CVDate("04:00")));
    Il faut créer dans la requête un champ DateHeure qui comprend [Date commande]+[Heure]
    la date de reference est date1 qui est stocké dans la table Periode
    si date1 = 10/09/2009 alors les enregistrements du 09/09/2009 15:00 au 10/09/2009 04:00 seront sélectionnés

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 139
    Points : 61
    Points
    61
    Par défaut
    Salut helas
    Ci dessous ma requete corrigée avec ton exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Clients.[Code client], Commandes.[Code client], Clients.Prenom, Commandes.Journee, Commandes.[Date commande], Commandes.Heure
    FROM Clients INNER JOIN Commandes ON Clients.[Code client] = Commandes.[Code client] 
    WHERE ((([Date commande]+[Heure])>=[Date1]-1+CVDate("15:00") And ([Date commande]+[Heure])<=[Date1]+CVDate("04:00")));
    ça me donne un message d’erreur lorsque je rentre les paramètres date 1 (10/09/2009)
    Cette expression présente une syntaxe incorrecte, ou est trop compliquée pour être évaluée. etc etc

    Et si tu me permets, je voudrais que la requête s’exécute avec la date du jour sans que l’on ai la nécessité d’entrer les paramètres date.
    Dans la table commande :
    Journée représente la journée administrative en cours soit le 10/09/2009 de 15h00 à 4h00 le lendemain 11/09
    Date commande est la journée réelle en cours qui est prise en considération lorsqu’on tape date()

    Pour exemple j’ai fait deux requêtes, la 1ère (toute la journée) qui me sort les données de date()-1 15h à date() 4h ; si j’exécute cette requête le 11/09

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Commandes.[N° commande], Clients.[Code client], Commandes.[Code client], Clients.Prenom, Commandes.[Date commande], Commandes.Heure
    FROM Clients INNER JOIN Commandes ON Clients.[Code client] = Commandes.[Code client]
    WHERE ((([Commandes].[Heure]+[Commandes].[Date commande]) Between Date()-1+(15/24) And Date()+(4/24)));
    La deuxième (jour matinée) qui me sort les données de date()-1 de 15h à 23h59 si j’exécute cette requête le 10/09

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Commandes.[N° commande], Clients.[Code client], Commandes.[Code client], Clients.Prenom, Commandes.Journee, Commandes.Heure
    FROM Clients INNER JOIN Commandes ON Clients.[Code client] = Commandes.[Code client]
    WHERE (((Commandes.Journee)=Date()) AND ((Commandes.Heure) Between #12/30/1899 15:0:0# And #12/30/1899 23:59:0#));
    Voilà j'espère que mes explications sont compréhensibles sinon je suis à ta disposition
    Merci d'avance
    Bob

  9. #9
    Membre chevronné
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Points : 2 178
    Points
    2 178
    Par défaut
    cette condition fonctionne parfaitement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WHERE ((([Date commande]+[heure])>=Date()-1+(15/24) And ([Date commande]+[heure])<=Date()+4/24))
    ou comme tu l'as écrit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WHERE ([Date commande]+[heure]) BETWEEN (Date()-1+(15/24)) And (Date()+4/24)

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 139
    Points : 61
    Points
    61
    Par défaut
    Resalut helas
    Je réponds avec un certain décalage horaire, comme tu l’as constaté avec mon programme je bosse ausii la nuit et je vis au Sénégal Heure Universelle.

    Lorsque j’exécute la requête par exemple le 9/09 à 21h20
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Commandes.[N° commande], Clients.[Code client], Commandes.[Code client], Clients.Prenom, Commandes.[Date commande], Commandes.Heure
    FROM Clients INNER JOIN Commandes ON Clients.[Code client]=Commandes.[Code client]
    WHERE (((Commandes.Heure+Commandes.[Date commande]) Between Date()-1+(15/24) And Date()+(4/24)));
    Elle me donne les résultats de la journée du 8/09 à partir de 15h et du 9/09 entre 0h00 et 4h00
    C’est surement parce que la requête est effectuée à partir de la date de commande.
    Lorsque je construits la requête à partir de la journée administrative (commande.journée)
    On obtiens ceux de la veille

    Je veux obtenir les résultats de la journée administrative en cours de 15h00 à 4h00 à n’importe quel instant de la journée, pour répertorier sur le moment les clients venus depuis 15h et récupérer les infos (code, date naissance etc)

    C’est un peu compliqué mais si ça ne l’était pas on ne communiquerai pas et ce serait bien dommage, car grâce à ce forum j’apprends beaucoup de chose.
    Amicalement à plus
    Bob

  11. #11
    Membre chevronné
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Points : 2 178
    Points
    2 178
    Par défaut
    et avec ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT Clients.[Code client], Clients.NOM, Clients.Prenom, Clients.DateNaissance, [Date commande]+[heure] AS Expr4, Hour(Now())<15 AS Expr1
    FROM Clients INNER JOIN Commandes ON Clients.[Code client] = Commandes.[Code client]
    GROUP BY Clients.[Code client], Clients.NOM, Clients.Prenom, Clients.DateNaissance, [Date commande]+[heure], Hour(Now())<15
    HAVING ((([Date commande]+[heure])>=(Date()-1+(15/24)) And ([Date commande]+[heure])<=(Date()+(4/24))) AND ((Hour(Now())<15)=True)) OR ((([Date commande]+[heure])>=Date()+(15/24)) AND ((Hour(Now())<15)=False))
    ORDER BY Clients.NOM, Clients.Prenom;

    Hour(Now())<15 est ajouté pour savoir sur quelle journée les critères portent.

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 139
    Points : 61
    Points
    61
    Par défaut
    salut helas
    bonne et excellente nouvelle ça marche
    Je vais envoyer ta solution aux copains sur excel download et clubic.
    comme tu peux voir j'ai ennuyé pas mal de monde avec mon programme.
    Félicitations pour ton dévouement et tes connaissances en vba.
    J'ai encore appris quelque chose.
    A bientôt pour une autre leçon.
    Bob

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 23/07/2002, 14h33
  2. soustraire deux dates ?
    Par joejoe dans le forum SQL
    Réponses: 2
    Dernier message: 19/07/2002, 15h53
  3. Generation d'evenements a une date precise
    Par pascalzzz dans le forum MFC
    Réponses: 2
    Dernier message: 04/06/2002, 15h21
  4. Réponses: 3
    Dernier message: 06/05/2002, 18h24
  5. Réponses: 3
    Dernier message: 19/04/2002, 00h11

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