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

Access Discussion :

[SQL] Différence de dates


Sujet :

Access

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    311
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2002
    Messages : 311
    Points : 96
    Points
    96
    Par défaut [SQL] Différence de dates
    Bonjour,

    Je suis sous VB6 avec une base Access

    Voici ma requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    sSQL = ""
    sSQL = sSQL & "SELECT " & GrilleCibleArt
    sSQL = sSQL & "FROM  Tireurs T, CibleArt A "
    sSQL = sSQL & "WHERE T.T_IdTireur = A.CA_IdTireur AND A.CA_Distance = '" & sDistance & "'" & " "
    sSQL = sSQL & "ORDER BY A.CA_Total DESC, A.CA_Cp1 DESC, A.CA_Cp2 DESC, A.CA_CP3 DESC, A.CA_Cp4 DESC, A.CA_Cp5 DESC, " & _
    T_Categorie ASC, T.T_DateNaiss ASC"
    J'aimerai si c'est possible mettre une condition dans la close OPRDER BY, du genre :

    Si T_Categorie = 1 ou 2 alors TDateNaiss DESC et si T_Categorie = 3 ou 4 ou 5 alors T_DateNaiss ASC

    Si oui comment ??

    Merci d'avance
    Fikou

  2. #2
    Membre du Club Avatar de rstephane
    Inscrit en
    Avril 2003
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Avril 2003
    Messages : 59
    Points : 48
    Points
    48
    Par défaut
    Ca doit donner ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If T_Categorie = 1 Or T_Categorie = 2 Then
        sSQL = sSQL & "ORDER BY TDateNaiss DESC"
    Else
        sSQL = sSQL & "ORDER BY TDateNaiss DESC"
    End If

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    311
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2002
    Messages : 311
    Points : 96
    Points
    96
    Par défaut
    Salut et merci rstephane

    En fait la condition doit être dans la clause ORDER BY de la requête.

    Se sont les résultat d'un concour, en cas d'égalité je dois trier d'abord les plus jeunes (adolescents, junior), les plus vieux et en dernier l'élite.

    Les plus jeunes = DESC les plus vieux ASC

    Je doit mettre le test dans la requete et pas à la construction de cette dernière

    Fikou

  4. #4
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT *
    FROM laTable
    ORDER BY Categorie, 
             CASE WHEN Categorie = 1 
                  THEN DateNaissance - current_date
                  ELSE current_date - DateNaissance
             END
    current_date est la fonction standard qui renvoie la date du jour.
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    311
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2002
    Messages : 311
    Points : 96
    Points
    96
    Par défaut
    Merci Médiat

    J'ai testé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    sSQL = sSQL & "ORDER BY T.T_Categorie, CASE WHEN T.T_Categorie = 1 THEN T.T_DateNaiss - CURRENT_DATE ELSE: CURRENT_DATE - T.TDateMaiss END
    "
    Il me dit : la méthode open de l'objet à échoué

    J'ai aussi simplifié :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sSQL = sSQL & "order by t.t_datenaiss - current_date"
    Idem

    Fikou

  6. #6
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Est-ce que current_date est dispo avec access ?
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    311
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2002
    Messages : 311
    Points : 96
    Points
    96
    Par défaut
    Bonne question !!!

    Je ne sais pas ou chercher la réponse mais je cherche

    Fikou

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    311
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2002
    Messages : 311
    Points : 96
    Points
    96
    Par défaut
    J'ai trouvé pour Current_Date à marche pô pour access

    http://sql.developpez.com/sqlaz/fonctions/

    Fikou

  9. #9
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Et tu as essayé NOW ?
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    311
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2002
    Messages : 311
    Points : 96
    Points
    96
    Par défaut
    Bonjour

    J'ai essayé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sSQL = sSQL & "order by t.t_datenaiss - NOW"
    J'ai l'erreur : Type de donnée incompatible dans l'expression du critère
    toutes mes dates sont au format "yyyy-mm-dd"
    Fikou

  11. #11
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Cherche dans la doc ACCESS comment on fait une différence de DATE, et comment on utilise NOW (est-ce qu'il faut mettre NOW() ? )
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    311
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2002
    Messages : 311
    Points : 96
    Points
    96
    Par défaut
    Re,

    Je sèche, J'ai tout essayé

    Effectivement dans un tuto il est dit de ne pas urilisé NOW() mais DATE()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ssql = ssql & "order by t.t_datenaiss - DATE()"
    ssql = ssql & "order by t.t_datenaiss - '#" & Format(Date, "mm.dd.yyyy") & "#"
    ect.
    J'ai une erreur de syntaxe

    j'ai essayé de récuperer la date du sys dans une variable et de l'implémenter dans ma requête, rien de rien


    Ca me gonfle je vais prendre l'air avec le chien, cela ira mieux au retour enfin j'espère

    Fikou

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    311
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2002
    Messages : 311
    Points : 96
    Points
    96
    Par défaut
    Bonjour,

    Si je fais un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    aChaine = "ASC"
    "ORDER BY T.T_Categorie " & aChaine
    Cela fonctionne
    Il faudrai que je mette un test CASE WHEN dans la requete pour implementer ma variable. Mais je ne sais pas ou le mettre ce test SELECT ? WHERE ? ni comment.

    J'ai essayé mais a marche pô

    Fikou

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Février 2005
    Messages : 86
    Points : 79
    Points
    79
    Par défaut
    Salut,
    J'ai peut-être pas compris mais si tu veux faire une différence entre deux dates, il me semble qu'il y a la fonction DateDiff.
    Sinon, pour convertir la date au bon format moi je fait :
    "ToString("M/d/yyyy")"

  15. #15
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    C'est un problème de fonction et de formattage, intrinsèque au SGBD, je déplace sur le forum Access.
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

Discussions similaires

  1. Date en sql (différence...)
    Par ammmm dans le forum PL/SQL
    Réponses: 1
    Dernier message: 17/11/2012, 19h19
  2. Réponses: 1
    Dernier message: 14/09/2012, 16h36
  3. Différence de date dans requete SQL
    Par GarsDuCalvados dans le forum Requêtes
    Réponses: 2
    Dernier message: 30/11/2010, 12h28
  4. [AC-2007] Requête SQL différence entre deux date en heure
    Par sarah12 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 21/07/2010, 20h58
  5. PL/SQL différence entre deux dates et select into
    Par athone666 dans le forum PL/SQL
    Réponses: 2
    Dernier message: 01/07/2009, 10h38

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