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 :

[SQL] like et date


Sujet :

Requêtes et SQL.

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 86
    Par défaut [SQL] like et date
    Bonjour,
    J'ai dans ma table une colonne de type date et j'aimerais savoir si il est possible de faire une recherche dans cette colonne comme si il s'agissait d'un texte.
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    matable :
     
    A		04/04/2006
    B		04/04/2007
    C		05/04/2007
    D		06/04/2007
     
    je recherche la chaîne "04/04" et ça va me renvoyer 
     
    A		04/04/2006
    B		04/04/2007
    C'est bête comme question, mais aujourd'hui je tourne en rond autour de ça

    j'ai essayé evidemment select * from matable where chDate like '*04/04*'

    mais ça ne marche pas

    bien amicalement,

    Eruil

  2. #2
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    Format transforme une date en chaîne. Ca devrait être pratique dans ton cas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ... WHERE Format(MaDate,"dd/mm/yy") LIKE ...
    Tu peux aussi utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ... WHERE Month(MaDate) = 4 AND Day(MaDate) = 4
    Bon courage,

    PGZ

  3. #3
    Membre Expert
    Avatar de mout1234
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 210
    Par défaut
    En supposant que ta recherche se fasse selon la syntaxe française habituelle (JJ/MM/AAAA), Essayes
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from matable where Format$(chDate,'dd/mm/yyyy') like '*04/04*'


    Mais pourquoi veux-tu faire ainsi? Ne serait-il pas plus efficace de traiter par sélection de périodes (between and) ou par composante de la date (Jour, Mois , Année)?

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Par défaut
    si tu veux les 04/04 il suffit de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    where month(madate)=4 and day(madate)=4

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 86
    Par défaut
    je vous remercie bien ! je testerais tout ça demain !

    je ne savait pas qu'on pouvais utiliser format dans des requêtes SQL c'est cool. je pense que ça répondra à mes besoins.

    Mais pourquoi veux-tu faire ainsi? Ne serait-il pas plus efficace de traiter par sélection de périodes (between and) ou par composante de la date (Jour, Mois , Année)?
    le but : un utilisateur choisi dans une liste déroulante sur quel champ de la table il veut effectuer sa recherche et dans un champs texte il tape le texte de sa recherche. Tous les champs étant des champs texte (sauf la date) je pensais qu'il était plus simple de traiter tous les champs de la même manière

    bon je vaisaler me coucher et réfléchir à tout ça

    merci bcp

  6. #6
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 86
    Par défaut Incohérence dans le format des dates
    Une dernière question/problème au sujet des dates ensuite je tag le topic en résolu :
    explication par l'exempl c'est plus parlant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    matable :
    le nom		la date
    A	  	  30/10/2006
    B		  30/10/2006
    C	  	  06/04/2007
    D	  	  06/04/2007
    la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select [la date],[le nom] from matable where [la date] = #30/10/2006#
    me renvoit bien les lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    A	  	  30/10/2006
    B		  30/10/2006
    là ou est le problème c'est la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select [la date],[le nom] from matable where [la date] = #06/04/2007#
    qui ne me renvoit rien

    et si j'utilise la requête suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select [la date],[le nom] from matable where [la date] = #04/06/2007#
    j'obtiens bien les lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    C	  	  06/04/2007
    D	  	  06/04/2007
    Pour résumer, Si le jour est supérieur à 12 alors la date est traitée comme étant dans le format français sinon elle est traitée dans un format américain.

    je voudrais juste un peu de cohérence soit le format américain tout le temps soit le format français tout le temps (préférable).

    j'ai tenté les fonctions format et format$ précitées mais acces ne semble pas trop comprendre ou alors je les utilise mal.

  7. #7
    Membre éclairé Avatar de Gary_Stoupy
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    244
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 244
    Par défaut
    bonjour,

    En effet, il peut souvent y avoir confusion
    Pour être sur, il faut que tu gardes le même formalisme lorsque tu insère tes données par le code et lorsque tu fais un simple select.
    Dans les 2 cas, entoures tes données d'un # ou bien alors convertit tes dates en double et tout devrait fonctionner

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

Discussions similaires

  1. [PL/SQL] Traitement de date
    Par lapartdombre dans le forum Oracle
    Réponses: 4
    Dernier message: 21/11/2005, 14h55
  2. Requête sql regroupement de dates
    Par rocs dans le forum Langage SQL
    Réponses: 1
    Dernier message: 28/07/2005, 16h40
  3. [SQL] selection des dates en ne distinguant pas l'heure
    Par meufeu dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 01/06/2005, 11h29
  4. Réponses: 2
    Dernier message: 06/10/2004, 18h09
  5. Réponses: 8
    Dernier message: 05/05/2004, 12h30

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