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

  • Votes
  • Date
  • Date décroissante
  1. Justement je ne connais pas tout à fait le SGBD,
    mais je pense bien que c'est Oracle
    1. WOAW !

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