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 MySQL Discussion :

Recherche SQL d'une année d'un champ de type VARCHAR


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 96
    Par défaut Recherche SQL d'une année d'un champ de type VARCHAR
    Bonjour à tous !
    Voila je n'arrive pas a faire une recherche sur ma base de données.

    J'ai une table 'suivi_omt_orne'
    Dans cette table j'ai un champ 'mise en service'
    Ce champ mise en service est un champ de type VARCHAR où je rentre des dates dedans au format JJ/MM/AAAA (c'est possible que ce champ soit vide).

    Je n'arrive pas a écrire une requête SQL pour avoir toutes les mises en service de l'année 2013...

    Si vous avez une solution je suis preneur ! Merci d'avance

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur C++
    Inscrit en
    Avril 2012
    Messages
    771
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 771
    Par défaut
    Bonjour,

    si vous stocké une date pourquoi n'utilisez vous pas une colonne de type DATEou DATETIME ?

    Votre problème aurait été résolu avec l'utilisation de la fonction YEAR.

    Il doit y avoir une solution à base de LIKE mais ce n'est pas une solution viable, il vaut mieut changer le type de la colonne.

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 96
    Par défaut
    Les types DATE ou DATETIME sont au format AAAAMMJJ; Je ne peux pas les utiliser car mes données proviennet d'un fichier .csv et quand l'utilisateur inserera des données dans ma table, pour 'mise_en_service', les données seront enregistrées de cette manière : JJ/MM/AAAA.

    C'est pourquoi mon champ est un type VARCHAR; L'utilisateur rentre ce qu'il veut dedans.. Il n'y a donc pas de sécurité pour ce champ, mais l'utilisateur ne veut pas rentrer les données de cette maniere : AAAAMMJJ...


    Après il est peut -être possible d'écrire dans la requête une conversion de mon type varchar en date?
    Je ne sais pas du tout comment cela s'écrirait...

    Si vous êtes calés là-dedans, je uis preneur de toute solution fonctionnelle ! Merci

  4. #4
    Membre Expert
    Homme Profil pro
    Développeur C++
    Inscrit en
    Avril 2012
    Messages
    771
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 771
    Par défaut
    L'utilisation des fonctions DATE_FORMAT et STR_TO_DATE sont la pour ça, lien vers la doc.

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 96
    Par défaut
    Voila ma solution: J'ai crée dans ma table un autre champ: mise_en_service_date de type DATE (AAAA-MM-JJ)
    Je fais cette requete SQL:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sqldate = "UPDATE suivi_omt_orne SET mise_en_service_date = STR_TO_DATE(mise_en_service, '%d/%m/%Y')";
    Et ca marche. Mais il faut le faire souvent pour "actualiser" les données

    J'ai des pages PHP d'insertion et de modification dans ma base que l'utilisateur pourra utiliser. Mon nouveau problème: Celui-ci n'aura pas accès à la base de données via phpMyAdmin.

    Il me faut donc une solution pour "actualiser" les données via ces pages.

    Ma page d'insertion est un formulaire. L'utilisateur rentre sa date : JJ/MM/AAAA, et derriere mon code la modifie avec ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sqldate = "UPDATE suivi_omt_orne SET mise_en_service_date = STR_TO_DATE(mise_en_service, '%d/%m/%Y')";
    Mais j'ai déjà un autre requête SQL. Voici mon code avec les requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
      //création de la requête SQL:
      $sql = "INSERT  INTO suivi_omt_orne (poste_source, depart, num_gdo_poste_a_equiper, equipement_a_poser, nom_de_poste, num_affaire, commune, charge_affaire, ipt, radio_ou_rtc, position_affaire, commentaires, prg, mex_prevue, mex_reelle, mise_en_service, modification_schema_exploitation)
                VALUES ( '$postesource', '$depart', '$gdo', '$equipement', '$nomposte', '$numaffaire', '$commune', '$chargeaffaire', '$ipt', '$radiortc', '$positionaffaire', '$commentaires', '$prg', '$mexprevue', '$mexreelle', '$miseenservice', '$modif') " ;
     
    if($miseenservice)
    {
    $sqldate = "UPDATE suivi_omt_orne SET mise_en_service_date = STR_TO_DATE(mise_en_service, '%d/%m/%Y')";
    }
     
      //exécution de la requête SQLDATE:
      $requetedate = mysql_query($sqldate, $connexion) or die( mysql_error() ) ;
     
      //exécution de la requête SQL:
      $requete = mysql_query($sql, $connexion) or die( mysql_error() ) ;
    Donc l'utilisateur insere des données et le truc c'est que la date dans mon champ mise_en_service_date est comme ceci: 0000-00-00.
    Ce n'est que lorsque l'utilisateur rentre d'autres données que le champ mise_en_service_date retrouve les valeurs...

    Est-ce normal?
    Est-ce possible d'écrire deux requete SQL dans le même fichier?

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 96
    Par défaut
    J'ai trouvé une réponse à mes questions:

    Oui il est possible d'écrire deux requêtes dans un même fichier, et oui c'était normal.

    La réponse : Il fallait inverser les deux "éxecution de la requête"

    ->
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    //exécution de la requête SQL:
      $requete = mysql_query($sql, $connexion) or die( mysql_error() ) ;
     
       //exécution de la requête SQLDATE:
      $requetedate = mysql_query($sqldate, $connexion) or die( mysql_error() ) ;
    et non
    //exécution de la requête SQLDATE:
    $requetedate = mysql_query($sqldate, $connexion) OR die( mysql_error() ) ;

    //exécution de la requête SQL:
    $requete = mysql_query($sql, $connexion) OR die( mysql_error() ) ;
    .

    Maintenant tout marche bien !

    Mais j'ai un autre problème, celui-ci concerne ma page de modification cette fois.
    Le code :
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
      //création de la requête SQL:
      $select = "UPDATE suivi_omt_orne
                  SET poste_source         = '$ps', 
    	          depart     = '$dep',
    		  num_gdo_poste_a_equiper    = '$numg',
    		  equipement_a_poser           = '$equip',
    		  nom_de_poste = '$nomp',
    		  num_affaire = '$numaff',
    		  commune = '$comm',
    		  charge_affaire = '$chrgaff',
    		  ipt = '$inter',
    		  radio_ou_rtc = '$radio',
    		  position_affaire = '$position',
    		  blocage = '$bloc',
    		  commentaires = '$commen',
    		  prg = '$prg',
    		  mex_prevue = '$mexp',
    		  mex_reelle = '$mexr',
    		  mise_en_service = '$mes',
    		  modification_schema_exploitation = '$modif'
               WHERE id_omt = '$ident' " ;
     
    if($mes)
    {
    $sqldate = "UPDATE suivi_omt_orne SET mise_en_service_date = STR_TO_DATE(mise_en_service, '%d/%m/%Y')";
    }
     
     //exécution de la requête SQL:
      $result = mysql_query($select, $link) or die( mysql_error() ) ;
     
      //exécution de la requête SQLDATE:
      $requetedate = mysql_query($sqldate, $connexion) or die( mysql_error() ) ;
    Si vous trouvez une erreur...

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

Discussions similaires

  1. [AC-2007] Recherche d'une année sur un champ par SQL
    Par mbo2 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 06/05/2013, 13h02
  2. [SQL] ordonner une requête avec deux champs
    Par The Free Man dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 01/08/2008, 16h05
  3. [SQL] - Faire une condition si un champ n'est pas nul
    Par toxycyty dans le forum Débuter
    Réponses: 2
    Dernier message: 19/06/2008, 10h42
  4. [SQL] Supprimer une ligne en fonction d'un type de champs
    Par Aspic dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 10/07/2007, 16h28
  5. Réponses: 14
    Dernier message: 26/03/2007, 16h52

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