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

Installation MySQL Discussion :

Clause Where sur une Date


Sujet :

Installation MySQL

  1. #21
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    effectivement essaies déja ça dans ton client mysql
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT l.id, l.reference, l.designation, l.Expiration_date, l.qte_total_out, l.qte_total_in, (l.qte_total_in - l.qte_total_out) AS 'inStock', p.qte_pick, l.lot_number, p.qte_return, p.date_picking FROM lot_number AS l JOIN picking AS p ON p.id_lot = l.id AND STR_TO_DATE(l.Expiration_date, '%m/%d/%Y') >= (CURDATE() - INTERVAL 15 DAY);
    j'ai changé le critère where par and
    j'ai ajouté la fonction str_to_date
    et j'ai viré add_date

  2. #22
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 65
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par ska_root
    effectivement essaies déja ça dans ton client mysql
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT l.id, l.reference, l.designation, l.Expiration_date, l.qte_total_out, l.qte_total_in, (l.qte_total_in - l.qte_total_out) AS 'inStock', p.qte_pick, l.lot_number, p.qte_return, p.date_picking FROM lot_number AS l JOIN picking AS p ON p.id_lot = l.id AND STR_TO_DATE(l.Expiration_date, '%m/%d/%Y') >= (CURDATE() - INTERVAL 15 DAY);
    j'ai changé le critère where par and
    j'ai ajouté la fonction str_to_date
    et j'ai viré add_date
    Bonjour,
    et merci, mais ta requête ne fonctionne pas.
    J'ai pas mal regardé la doc. et je ne vois d'ou vient le problème !
    ça marche bien avec une date formaté en aaaa/mm/jj, mais
    avec un autre format il a du mal !
    j'ai l'impression qu'il n'aime pas le STR_TO_DATE de la colonne l.expiration_date .

  3. #23
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    Citation Envoyé par Zebulonn
    j'ai l'impression qu'il n'aime pas le STR_TO_DATE de la colonne l.expiration_date
    hmmm...
    quel est ta version de mysql ? car STR_TO_DATE() est disponible depuis MySQL 4.1.1.

    sinon essaies de faire un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT STR_TO_DATE('09/28/2005', '%m/%d/%Y') FROM `lot_number`;
    puis un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT STR_TO_DATE('Expiration_date', '%m/%d/%Y') FROM `lot_number`;
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT (CURDATE() - INTERVAL 15 DAY) FROM `lot_number`;
    si les trois fonctionnent, ton problème ne vient pas de là... sinon dis-nous laquelle ne passe pas

  4. #24
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 65
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par ska_root
    Citation Envoyé par Zebulonn
    j'ai l'impression qu'il n'aime pas le STR_TO_DATE de la colonne l.expiration_date
    hmmm...
    quel est ta version de mysql ? car STR_TO_DATE() est disponible depuis MySQL 4.1.1.

    sinon essaies de faire un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT STR_TO_DATE('09/28/2005', '%m/%d/%Y') FROM `lot_number`;
    puis un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT STR_TO_DATE('Expiration_date', '%m/%d/%Y') FROM `lot_number`;
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT (CURDATE() - INTERVAL 15 DAY) FROM `lot_number`;
    si les trois fonctionnent, ton problème ne vient pas de là... sinon dis-nous laquelle ne passe pas
    Seule la 3ème requête fonctionne !
    Les 2 autres posent problème error 1064.

    Merci

  5. #25
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Pourquoi faire simple quand on peut faire compliqué.

    Tu stockes tes dates dans un champ de type 'date', au format YYY-MM-JJ et tu n'auras plus de pb. Ce n'est pas la peine d'en fabriquer.

  6. #26
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 65
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par jeca
    Pourquoi faire simple quand on peut faire compliqué.

    Tu stockes tes dates dans un champ de type 'date', au format YYY-MM-JJ et tu n'auras plus de pb. Ce n'est pas la peine d'en fabriquer.
    Exact, mais bon, si je change maintenant le type de ma colonne, ça va foutre le brin dans mesdata !!! ça va m'obliger à passer du Varchar au format Date !!!
    Fo voir !
    Merci en tout cas

  7. #27
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Tu ajoutes un colonne de type 'date' dans table.
    Ensuite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    update laTable
    set leNouveauChampDatedate = concat(substring('leChampDate', 7), '-', substring('leChampDate', 4,2), '-', substring('leChampDate', 1,2))
    Puis tu supprimes l'ancienne colonne.

    Ce ne doit pas être trop long à faire.

  8. #28
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    tu ne m'a pas répondu sur ta version de mysql, mais bon a priori elle n'accepte pas la fonction str_to_date, désolé, il ne te reste plus que 2 solutions:
    • la soluce a jeca
      l'extraction des donnees du champs "Expiration_date" pour recomposer un type date...


    m'enfin, je crois

  9. #29
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 65
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par ska_root
    tu ne m'a pas répondu sur ta version de mysql, mais bon a priori elle n'accepte pas la fonction str_to_date, désolé, il ne te reste plus que 2 solutions:
    • la soluce a jeca
      l'extraction des donnees du champs "Expiration_date" pour recomposer un type date...


    m'enfin, je crois
    Ok, Merci d'avoir pris le temps.
    Ma version de mysql 4.0.15, normalement doit accepter le STR_To_date !!!
    Donc, je vais essayer de modidier la colonne date sans faire trop de casse.
    A+

  10. #30
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    STR_TO_DATE() est disponible depuis MySQL 4.1.1.

    D'autre part, je ne vois pas ce que tu peux casser si tu fais l'update dans une nouvelle colonne.

  11. #31
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 65
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par jeca
    STR_TO_DATE() est disponible depuis MySQL 4.1.1.
    arghhh..... bon je sais ce qu'il me reste à faire !!!
    Merci jeca

  12. #32
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 65
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par Zebulonn
    Citation Envoyé par jeca
    STR_TO_DATE() est disponible depuis MySQL 4.1.1.
    arghhh..... bon je sais ce qu'il me reste à faire !!!
    Merci jeca
    Suite et fin je l'espère :

    J'ai mis à jour mysql, et installé la version 1.8 d'Easyphp :
    la requête fonctionne bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT l.id, l.reference, l.designation, l.Expiration_date, l.qte_total_out, l.qte_total_in, (l.qte_total_in - l.qte_total_out)  AS 'inStock', l.lot_number, p.qte_pick, p.qte_return, p.date_picking
    FROM lot_number AS l JOIN picking AS p ON p.id_lot = l.id   AND STR_TO_DATE&#40;l.Expiration_date, "%m/%d/%Y"&#41; <= DATE_ADD&#40;CURDATE&#40;&#41;, INTERVAL 15 DAY&#41;
    ORDER BY l.Expiration_date ASC
    Mais en execution j'ai une Parse error sur la ligne STR_TO_DATE.

    Des idées ?

    Merci

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Clause Where sur une colonne renommée
    Par 13mike dans le forum Langage SQL
    Réponses: 3
    Dernier message: 29/01/2011, 14h47
  2. substr dans un where sur une date '2010-04-30 12:11:12'
    Par sinifer dans le forum Requêtes
    Réponses: 6
    Dernier message: 03/05/2010, 15h52
  3. Clause where avec une date..
    Par bobic dans le forum Requêtes
    Réponses: 3
    Dernier message: 09/04/2008, 17h12
  4. Réponses: 3
    Dernier message: 19/06/2007, 23h34
  5. [MySQL] Clause WHERE sur une liste et jeu de caractère
    Par napz dans le forum Langage SQL
    Réponses: 5
    Dernier message: 11/10/2006, 14h03

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