Format DATE

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. Salut,

    Peux-tu préciser le SGBD utilisé s'il te plait.
    0
    1. Justement je ne connais pas tout à fait le SGBD,
      mais je pense bien que c'est Oracle
      0
      1. WOAW !

        comment ça je ne connais pas tout à fait le SGBD ?
        Quel outil utilises-tu pour envoyer tes requêtes à ton SGBD ?
        0
        1. 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
          1. 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
            1. 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
              1. 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