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 :

Faire la différence d'une date dans un même champ


Sujet :

Requêtes et SQL.

  1. #1
    Candidat au Club
    Inscrit en
    Novembre 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Faire la différence d'une date dans un même champ
    Bonsoir à tous,

    J'essaye de faire une requête qui ferait la différence entre 2 dates dans un champ.

    Date <- intitulé de mon champ
    2007-2008 <- J'aimerais que la requête de trouve la différence = 1 (2008-2007)
    2001-2005 <- J'aimerais que la requête de trouve la différence = 4 (2005-2001)

    Le problème étant que les 2 dates se trouvent dans le seul champ "Date"

    Mes questions sont les suivantes :

    - Quel type de donné dois-je donner au champ "Date" (numérique, date, texte ,...) ?
    - Quel est la requête qui trouverait la différence ?
    - Cette requête est-elle possible ? ^^

    Merci à ceux qui vont m'aider à faire avancer le shmilblic

  2. #2
    Membre éclairé Avatar de ft035580
    Profil pro
    Inscrit en
    Août 2004
    Messages
    689
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 689
    Points : 812
    Points
    812
    Par défaut
    Salut,

    Citation Envoyé par Ludivine91
    - Quel type de donné dois-je donner au champ "Date" (numérique, date, texte ,...) ?
    - Quel est la requête qui trouverait la différence ?
    - Cette requête est-elle possible ?
    -Si c'est une date , laisse le format "Date".

    Peut être en passant par une conversion de date en année.

    Ex:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT Format([Date1],"yyyy") AS Année1, Format([Date2],"yyyy") AS Année2, [Année2]-[Année1] AS Différence
    FROM TaTable;

    Ma seule interrogation:

    Citation Envoyé par Ludivine91
    Le problème étant que les 2 dates se trouvent dans le seul champ "Date"
    ???

    Bon courage

  3. #3
    Candidat au Club
    Inscrit en
    Novembre 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Le format date ou numérique ne fonctionne pas, j'ai laissé texte.

    J'ai pas compris ta requête SQL, je sais pas comment ça fonctionne

    voilà comment se présente le champ :



    donc j'aimerais trouvez la requête qui permettrait de faire la différence entre l'année placé en second moins celle placé en premier.

    Mais comme c'est du texte je crains que ce ne soit pas possible.

    Si les années n'étaient pas dans le même champ ça serait très simple mais là c'est pas le cas.

    Jvais faire ma pessimiste mais ce que je cherche à faire semble incohérent et donc infaisable .

  4. #4
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    Bonjour,
    ..la différence entre 2 dates dans un champ....les 2 dates se trouvent dans le seul champ "Date"
    ...cela est relativement facile à faire....

    Exemple: je considère ici, que la valeur du champ "Date" (DateAnnee) est toujours sous la forme XXXX-XXXX ....

    Ta requête donnera ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DateDifference: ExtracChaîne([DateAnnee];6;4)-ExtracChaîne([DateAnnee];1;4)
    ...ou en SQL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT Mid([DateAnnee],6,4)-Mid([DateAnnee],1,4) AS DateDifference
    FROM T_Date;
    Bonne continuation......

  5. #5
    Candidat au Club
    Inscrit en
    Novembre 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    C'est exactement ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DateDifference: ExtracChaîne([DateAnnee];6;4)-ExtracChaîne([DateAnnee];1;4)
    Merci FreeAccess ainsi que ft035580 pour avoir cherché

    Par contre j'aimerais bien une petit explication de la formule.

    ExtracChaîne : casse la valeur du champ si je comprends bien
    [DateAnnee] : c'est le nom donné aux parties coupées ?
    Les chiffres détermines le nombre de chiffre qu'il faut couper ? si oui, je peux comprendre 1;4 mais 6;4 je vois pas trop

    Merci encore

  6. #6
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    Bonjour

    Issue de l'aide d'Access..
    Mid, fonction

    Renvoie une valeur de type Variant (String) contenant un nombre indiqué de caractères extraits d'une chaîne de caractères.

    Syntaxe
    Mid(string, start[, length])
    Ce qui donne dans ton cas..:

    [DateAnnee] Nom du champ dont tu veux extraire une chaine de caractères. (par exemple: 2001-2004)
    Ici "l'extraction" de ta chaine contenue dans le champ [DateAnnee] commence à partir du 6ème caractère sur une longueur de 4 caractères....soit 2004

    Et voilà, pour la suite je pense que tu as compris toute seule....

  7. #7
    Candidat au Club
    Inscrit en
    Novembre 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    L'éternel touche F1 qu'on a beau avoir sous les yeux on y pense jamais

    En tout car merci pour les explications, c'est très clair maintenant.

    Bye

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

Discussions similaires

  1. Faire un zoom sur une figure dans le même slide
    Par Delaready dans le forum Powerpoint
    Réponses: 2
    Dernier message: 15/06/2014, 01h23
  2. Réponses: 1
    Dernier message: 28/04/2014, 13h29
  3. Faire la somme d'une colonne dans la même requête
    Par logiciel_const dans le forum SQL
    Réponses: 23
    Dernier message: 26/10/2010, 09h47
  4. [XL-2003] Faire apparaitre une date dans un combo au démarrage d' un userform
    Par revemane dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/09/2009, 14h11
  5. [MySQL] Faire un INSERT d'une date format Francais dans un champ date '0000-00-00' ?
    Par bilou95 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 20/11/2006, 13h49

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