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

SQL Oracle Discussion :

select sur une date


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2009
    Messages
    152
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juin 2009
    Messages : 152
    Par défaut select sur une date
    Peut 'on en sql réaliser un select avec comme condition:

    exemple:
    select toto from table where la_date='10/02/2009';

    lorsque je fais la requete si dessous cela fonctionne mais pas celle ci dessus.

    select toto from table where la_date >='10/02/2009';

    Merci d'avance...

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Par défaut
    Une date Oracle stocke jour, mois, an, heures, minutes et secondes. Pour ne pas prendre en compte les heures, minutes, secondes, utilisez la fonction TRUNC (sinon JJ/MM/AAAA correspond à JJ/MM/AAAA 00:00:00):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select toto from table where trunc(la_date)='10/02/2009';

  3. #3
    Membre chevronné Avatar de xdescamp
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 300
    Par défaut
    '10/02/2009' est une chaine de caractères, pas une date.
    Il faut convertir cette chaine en date avec TO_DATE :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select toto from table where la_date = TO_DATE('10/02/2009','DD/MM/YYYY');
     
    select toto from table where la_date >= TO_DATE('10/02/2009','DD/MM/YYYY');

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Voilà, il n'y a plus qu'à combiner les deux réponses ci-dessus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select toto
      from table
     where trunc(la_date) = to_date('10/02/2009', 'dd/mm/yyyy');
    Si vous avez un index sur la_date, il vaut mieux écrire la requête ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select toto
      from table
     where la_date >= to_date('10/02/2009', 'dd/mm/yyyy')
       and la_date <  to_date('11/02/2009', 'dd/mm/yyyy');

  5. #5
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2
    Par défaut
    peux-tu clarifier un peu,parceque les deux requetes fonctionnent

    Citation Envoyé par breizh76 Voir le message
    Peut 'on en sql réaliser un select avec comme condition:

    exemple:
    select toto from table where la_date='10/02/2009';

    lorsque je fais la requete si dessous cela fonctionne mais pas celle ci dessus.

    select toto from table where la_date >='10/02/2009';

    Merci d'avance...

  6. #6
    Inactif  

    Homme Profil pro
    Freelance EURL / Business Intelligence ETL
    Inscrit en
    Avril 2005
    Messages
    5 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance EURL / Business Intelligence ETL
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2005
    Messages : 5 878
    Billets dans le blog
    3
    Par défaut
    Question : il ne faut pas non plus ajouter un format de date quand on invoque la fonction trunc ? Je suppose qu'il va chercher un format de date paramétré par défaut, donc autant s'assurer on proposant le format de date dont on est sûr....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT toto
      FROM TABLE
     WHERE trunc(la_date,'dd/mm/yyyy') = to_date('10/02/2009', 'dd/mm/yyyy');
    - So.... what exactly is preventing us from doing this?
    - Geometry.
    - Just ignore it !!
    ****
    "The longer he lived, the more he realized that nothing was simple and little was true" A clash of Kings, George R. R. Martin.
    ***
    Quand arrivera l'apocalypse, il restera deux types d'entreprise : les pompes funèbres et les cabinets d'audit. - zecreator, 21/05/2019

  7. #7
    Membre confirmé
    Inscrit en
    Juin 2009
    Messages
    152
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juin 2009
    Messages : 152
    Par défaut
    ah parfait. C'est parfaitement ce que je voulais.

    Merci pour tout. Comme d'hab \o/

  8. #8
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Citation Envoyé par Glutinus Voir le message
    Question : il ne faut pas non plus ajouter un format de date quand on invoque la fonction trunc ? Je suppose qu'il va chercher un format de date paramétré par défaut, donc autant s'assurer on proposant le format de date dont on est sûr....
    Le format par défaut de trunc est 'DD', et à ma connaissance n'est pas paramétrable. Mais effectivement ça ne fait pas de mal de le préciser.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 153
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Le format par défaut de trunc est 'DD', et à ma connaissance n'est pas paramétrable. Mais effectivement ça ne fait pas de mal de le préciser.
    moi je voudrais supprimer sur une table toute les données qui sont antérieur a Mois-2 (cette table est immense et garde 2 mois historique)
    il y a un index sur la colonne date_integration
    suppression de tout ce qui a - de 2 mois
    cela donne quoi ensuite

    SELECT *
    FROM toto
    WHERE la_date >= to_date('27/01/2010', 'dd/mm/yyyy')
    AND la_date < to_date('01/12/2009', 'dd/mm/yyyy');

    la date invalid identifier ?

    SELECT *
    FROM toto
    WHERE trunc(created_date) = to_date('01-Dec-2009', 'dd-Mon-yyyy');



    merci par avance

  10. #10
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Quelque chose de ce type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DELETE FROM MaTable
    WHERE MaDate < add_months(sysdate, -2)

  11. #11
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    delete ma_table
    where created_date < add_months(sysdate,-2)

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

Discussions similaires

  1. Select case sur une date
    Par tamtam64 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 14/11/2013, 16h45
  2. Select avec max sur une date
    Par olibara dans le forum Requêtes
    Réponses: 10
    Dernier message: 06/07/2010, 07h18
  3. Problème de lenteur due à une selection sur une date [CR 8.5]
    Par Fredifredo dans le forum SAP Crystal Reports
    Réponses: 15
    Dernier message: 13/02/2007, 17h10
  4. select sur une date de plus de x jour
    Par Zen_Fou dans le forum Requêtes
    Réponses: 4
    Dernier message: 03/04/2006, 17h14
  5. Problème de select sur une date (DATETIME....)
    Par zeldoi5 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 16/05/2005, 11h19

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