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 :

Requête pour obtenir une liste dont la valeur d'un champ est compris entre 2 valeurs.une valeur est compris


Sujet :

Requêtes MySQL

  1. #1
    Membre habitué
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 360
    Points : 139
    Points
    139
    Par défaut Requête pour obtenir une liste dont la valeur d'un champ est compris entre 2 valeurs.une valeur est compris
    Bonjour,

    Je suis confronté à un problème assez complexe et je vais essayer de le simplifier au maximum

    J'ai une table jour
    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
     
    	private Integer idJour;
    	private Absence absence;
    	private Semaine semaine;
    	private String jour;
    	private Time debutHoraire;
    	private Time finHoraire;
    	private String typeHoraire;
    	private String libelleJour;
    	private int indexJour;
    	private String dureeTravail;
    	private String dateJour;
    	private Integer mois;
    	private Integer annee;
    	private String modif;
    	private String dureeAfaire;
    	private String repoComp;
    Je souhaiterai obtenir une liste d'information en fonction de l'attribut dateJour (ex : 10-11-2013)
    En effet, les informations à récupérer doit être comprise, par exemple, entre le 01-01-2013 et le 31-05-2013.

    Comment puis je faire, sachant que l'attribut dateJour est un varchar et non une date ?


    PS : Cette requête me renvoit tous les tuples présent dans la table jours :
    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
     
    SELECT personne.nom, personne.prenom, service.nomService, compteur.horaireFaite, compteur.observation, semaine.dateDebutSem, semaine.dateFinSem, semaine.numeroSemaine, jour.dateJour,
    jour.repoComp
    FROM Compteur AS compteur, Personne AS personne, Semaine AS semaine, Perssemainecompt AS perssemainecompt, Service AS service, Jour AS jour
    WHERE personne.idService = service.idService
    AND perssemainecompt.idPersonne = personne.idPersonne
    AND perssemainecompt.idCompteur = compteur.idCompteur
    AND perssemainecompt.idJour = jour.idJour
    AND semaine.type = 'Réalisé'
    AND personne.idPersonne =93
    and `dateJour`
    BETWEEN '01-01-2013'
    AND 
     '31-06-2013'
    GROUP BY jour.idJour

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Citation Envoyé par leara500 Voir le message
    Comment puis je faire, sachant que l'attribut dateJour est un varchar et non une date ?
    bonjour,

    Celui qui a conçut la table c'est tiré une balle dans les pieds et les mains ...

    si vous le pouvez encore :
    - changer le type de varchar a ... date !

    Sinon, pas le choix il va falloir caster votre colonne varchar en date avec la fonction MySql str_to_date (et là au revoir les recherche sur index => perf pourri si volumétrie)
    Le between sera alors possible pour peu que vous passiez une date en paramètre

  3. #3
    Membre habitué
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 360
    Points : 139
    Points
    139
    Par défaut
    Merci beaucoup pour votre réponse

    J'ai donc rajouté un autre champs que j'ai nommé dateJourDate et que j'ai mis en format date.

    Maintenant je rencontre un problème a un autre niveau et j'espère que vous pourrais me renseigner.

    Ce bout de code, en java, permet de récupérer les différents jour qui compose un semaine (lun-17-nov-2013, mar-18-nov-2013, etc)

    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
     
    	//On gère les jours qui compose la semaine
    		 SimpleDateFormat sdf1 = new SimpleDateFormat("dd-MM-yyyy");
    	        SimpleDateFormat sdf2 = new SimpleDateFormat("EE-dd-MM-yyyy");
    	        Date dateDebut = sdf1.parse("27/10/2012");
    	        Date dateFin = sdf1.parse("31/10/2012");
    	        Calendar debut = Calendar.getInstance();
    	        Calendar fin = Calendar.getInstance();
    	        debut.setTime(dateDebutSemaine);
    	        fin.setTime(dateFinSemaine);
    	        int cpteJours = 0; // si debut == fin, on a 1 jour
    	        debut.add(Calendar.DAY_OF_MONTH,0); // Pour récupérer la date de début
     
    	        //Pour récuperer les jour de la semaine et créé les objets jourDTO
    	        do {
                          //Insertion du jour
    	        	jourDto.setJour(sdf2.format(debut.getTime()));
    	        }
    La jour de setJour ne peut contenir qu'une String. Et j'aimerai récupérer également cette valeur en tant que date. Auriez vous une idée ?

    Je vous en remercie d'avance

  4. #4
    Membre actif
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Novembre 2013
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 142
    Points : 295
    Points
    295
    Par défaut toString()
    Hello,

    Si je comprends bien, la méthode setJour accepte une String

    As-tu essayé ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jourDto.setJour(sdf2.format(debut.getTime()).toString());

  5. #5
    Membre habitué
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 360
    Points : 139
    Points
    139
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    //Insertion du libellé 
    jourDto.setJour(sdf2.format(debut.getTime()));
    Ceci me permet de récupérer le jour en format String, variable que j'utilise dans une autre partie de cette appli.

    Toutefois, dans le but de récupérer la liste des jours qui sont compris entre le 01/01/2013 et le 31/06/2013, j'ai rajouté un champs dateJourDate (en format date.

    jour.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    private Date dateJourDate;

    Le soucis que je rencontre, c'est comment insérer le jour en format Date

    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
    33
    34
    35
    36
    37
    38
     
     SimpleDateFormat sdf1 = new SimpleDateFormat("dd-MM-yyyy");
    	        SimpleDateFormat sdf2 = new SimpleDateFormat("EE-dd-MM-yyyy");
    	        Date dateDebut = sdf1.parse("27-10-2012");
    	        Date dateFin = sdf1.parse("31-10-2012");
    	        Calendar debut = Calendar.getInstance();
    	        Calendar fin = Calendar.getInstance();
    	        debut.setTime(dateDebutSemaine);
    	        fin.setTime(dateFinSemaine);
    	        int cpteJours = 0; // si debut == fin, on a 1 jour
    	        debut.add(Calendar.DAY_OF_MONTH,0); // Pour récupérer la date de début
     
    	        //Pour récuperer les jour de la semaine et créé les objets jourDTO
    	        do {
    				JourDTO jourDto = new JourDTO();
     
    	        	//1-récupération des variables du formulaire
    	           	String numemoJourValue = ""+sdf2.format(debut.getTime());
    	           	String libJour = numemoJourValue.substring(0, 3); //Pour récupérer lun, mar dim
     
     
    	           	String dateJour= numemoJourValue.substring(5,15);  //pour récuperer les jours sans le lun, mar, 
     
     
     
    	        	//Insertion du libellé 
    	        	jourDto.setJour(sdf2.format(debut.getTime()));
     
    	        	System.out.println("Calendar.getTime() ******   :"+Calendar.getInstance());
     
    	        	jourDto.setIndexJour(i);
    	        	//Insetion du numero de la semaine
    	        	jourDto.setSemaineDTO(semaineDto);
    	        	jourDto.setLibelleJour(libJour);
    	        	jourDto.setDateJour(dateJour);
    	        	jourDto.setMois(Integer.parseInt(mois));
    	        	jourDto.setAnnee(Integer.parseInt(annee));
    	        	jourDto.setDateJourDate(Calendar.getDate());


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    	jourDto.setDateJourDate(Calendar.getDate());
    ne fonctionnant pas
    Merci pour votre aide

  6. #6
    Membre habitué
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 360
    Points : 139
    Points
    139
    Par défaut
    Finalement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jourDto.setDateJourDate(sdf1.parse(dateJour));
    m'a permis de trouver une solution à mon problème ^^

    Merci beaucoup pour votre aide !

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

Discussions similaires

  1. Requête pour obtenir la liste des tables
    Par PhunkyBob dans le forum Requêtes et SQL.
    Réponses: 11
    Dernier message: 06/08/2018, 16h38
  2. Requête pour obtenir une liste
    Par shayw dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 02/07/2015, 20h42
  3. Réponses: 4
    Dernier message: 01/11/2013, 20h04
  4. Recherche d'une liste dont le produit de ses membres s'approche le plus d'une valeur
    Par sm1z2000 dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 11/05/2009, 16h05
  5. Quelle requête dois-je écrire pour obtenir cette liste ?
    Par boufon dans le forum Langage SQL
    Réponses: 1
    Dernier message: 19/07/2007, 02h12

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