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 :

Comparaison de dates


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 94
    Par défaut Comparaison de dates
    Bonjour à tous,

    je suis occupé à implémenter un programme java devant comparer deux dates dans une base de données.

    Le problème que je rencontre est que les dates stockées en DB le sont sous la forme d'un DECIMAL. On trouve ainsi : 20120403 pour la date d'aujourdhui.

    J'aimerai pouvoir comparer une date entrée par l'utilisateur pour récupérer tous les objets ayant une date inférieure à celle entrée.

    J'ai vu qu'il existe des fonctions de formattages mais je ne sais pas laquelle choisir, et quel tag utiliser pour spécifier mon formatage en DB.
    J'aimerai utiliser quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE format(champ_date_db) <= format('20120403')
    pour récupérer les objets ayant une date inférieure à la date d'aujourd'hui (03/04/2012)

    Merci d'avance

  2. #2
    Membre Expert Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Par défaut
    Bonjour,

    Le format de ta date n'est pas en décimal ici mais sous la forme YYYYMMDD.

    Si tu veux la formater autrement utilise TO_CHAR.

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 94
    Par défaut
    Bonjour et merci.

    Quand je vais voir dans la définiton de ma table, le DATA_TYPE m'indique NUMBER(0,8), il n'aurait pas du m'indiquer DATE alors?

    Si vraiment il s'agit alors d'une date, puis-je utiliser directement les opérateurs de comparaisons pour comparer alors mes dates?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE champ_date_db <= 20120403
    Le problème est que mon entrée 20120403 sera sous la forme d'une chaine de caractères dans mn programme, je supose que je dois donc la convertir en date?

  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
    Quel est votre SGBD ?

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 94
    Par défaut
    Oracle SQL Developer.

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2010
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 412
    Par défaut
    En pratique, c'est pas stocke comme une date en base. Vous ne pouvez donc pas facilement changer l'affichage, recuperer simplement le jour, etc. Et vous pouvez mettre le 41 janvier 2012 ou le 13 du mois numero 42 de l'an 2012.

    Mais techniquement, comme c'est au format YYYYMMDD vous pouvez faire vos comparaisons directement.
    Le 21 Mars 2010 est situe avant le 29 Fevrier 2012:
    20100321<20120229

  7. #7
    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
    Il faut d'abord convertir votre nombre en chaîne puis en date pour le comparer à la date du jour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE to_date(to_char(champ_date_db), 'yyyymmdd') <= sysdate;

Discussions similaires

  1. comparaison de dates javascript
    Par SpaceFrog dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 12/07/2005, 08h45
  2. comparaison de dates
    Par pmithrandir dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 02/06/2005, 16h12
  3. comparaison de date
    Par nickoshiba dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 15/03/2005, 15h48
  4. Comparaison de dates
    Par Tapioca dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 16/06/2004, 15h55
  5. Problème de comparaison de dates
    Par MiJack dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/03/2004, 21h43

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