Format DATE

kadden Messages postés 311 Statut Membre -  
 fiu -
Bonjour,

Je voulais vous demander comment trouver une date dans une table SQL,
j'utilise la requête suivante :
"SELECT * From table where ma_date = 08/06/1975"

pourtant sur une base de donnée MySql, ça marchait bien, mais le format du champ "ma_date" était TEXTE

Merci pour vôtre aide

7 réponses

  1. fiu
     
    Salut,

    Peux-tu préciser le SGBD utilisé s'il te plait.
    0
  2. kadden Messages postés 311 Statut Membre 9
     
    Justement je ne connais pas tout à fait le SGBD,
    mais je pense bien que c'est Oracle
    0
  3. fiu
     
    WOAW !

    comment ça je ne connais pas tout à fait le SGBD ?
    Quel outil utilises-tu pour envoyer tes requêtes à ton SGBD ?
    0
  4. kadden Messages postés 311 Statut Membre 9
     
    Par un requetteur par exemple
    et donc on ne pourra même pas voir le type de SGBD,

    cela dit je pense que c'est du Oracle

    Merci pour vôtre aide
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. fiu
     
    Salut

    mais qu'est-ce qui te laisse penser que c'est de l'oracle, quels indices te poussent à croire ça ?

    si c'est de l'oracle, la vue v$version devrait te renvoyer quelque chose
    0
  7. kadden Messages postés 311 Statut Membre 9
     
    Je ne sais pas comment taper une commande pour la version du SGBD,

    mais j'ai taper une requête qui ne marche qu'avec ORACLE :

    Select * from All_tables

    Merci de me dire comment faire pour chercher une date dans une table Oracle
    0
  8. fiu
     
    Salut

    en passant: c'est pas l'existence de all_tables qui peut t'assurer que le sgbd est Oracle.

    Si c'était de l'oracle, ta date dépendrait des paramètres de ta session. Et le plus simple a toujours été d'annoncer à Oralce le format de date désiré (juste après l'ouverture de session).
    Une fois ce format annoncé, toutes les conversions de date (date->chaine ou chaine->date) implicites ou explicites se font par défaut avec ce format. Si, pour un cas particulier, on a besoin d'un autre format, on le précise lors de la conversion.

    A. Juste après l'ouverture de session, on pourrait envoyer
    ALTER SESSION SET NLS_DATE_FORMAT='dd/mm/yyyy';
    nb: Ça c'est typiquement Oracle

    B. Recherche de tous les dtButee < 1er juillet
    SELECT * FROM table where dtButee < '01/07/2010';
    c'est interprété par Oracle en
    SELECT * FROM table where dtButee < to_date('01/07/2010');
    nb: le format par défaut a été utilisé par to_date()

    C. la même recherche avec un to_char() explicite utilisant le format par défaut
    SELECT * FROM table WHERE to_char(dtButee) < '01/07/2010';
    ne fonctionnera pas car le 02/06 ne serait pas inférieur au 01/07

    Cbis. la même recherche avec un to_char() explicite citant le format à utiliser
    SELECT * FROM table WHERE to_char(dtButee, 'yyyymmdd') < '20100701';

    D. Recherche de tous les dtButee < aujourd'hui
    SELECT * FROM table where dtButee < sysdate; -- comparaison date avec date

    E. Offrir 2 points sur la moyenne aux elèves dont c'est l'anniversaire
    UPDATE eleves
    SET moyenne_generale = moyenne_generale + 2
    WHERE to_char(dtNaissance, 'ddmm') = to_char(sysdate, 'ddmm');


    F. Provoquer une erreur avec une requête ne respectant pas le format défini dans la session
    SELECT * FROM table WHERE dtButee < '01/07/2010 13:30:00');
    0