[oracle] comparaison d'heures

Résolu
Bonjour,
Je travaille sous une base Oracle 8i. Je dispose d'un champs date du type 01/12/05 16:01:50. Il faut que je sélectionne tous les enregistrements dont la l'heure est comprise entre 8h00 et 8h30.
Si quelqu'un connait la solution ....
Merci d'avance
Gilles

3 réponses

  1. Salut Gilles,

    Un peu tordu mais tu peux faire comme ça :

    select to_char(sysdate, 'DD/MM/YYYY HH24:MI') from dual
    where to_number(to_char(sysdate, 'HH24MI')) between 0800 and 0830;
    1. Bonjour Marina,
      Merci beaucoup pour cette réponse qui n'est pas tordue puisqu'elle fonctionne :-)
      A charge de revanche.
      Gilles
  2. Modérateur
    select * from ...
    where date between '2005-12-01 08:00' and '2005-12-01 08:30'


    si je ne me trompe pas.
    1. Il y a pas besoin de convertir avec TO_NUMBER, la solution est très simple:

      SELECT * FROM [TABLE]
      WHERE TO_CHAR([CHAMP], 'HH24:MI') BETWEEN '08:00' AND '08:30'

      Il gère tout seul le between sur du texte sans problème, @+
  3. oui mais la c'est que pour une journée, non ?
    ne faut-il pas utiliser TO_CHAR() et SUBSTR() si on veut extraire uniquement
    les heures de tous les jours ?

    ou mieux HOUR() et MINUTE()
    1. Effectivement, le problème se pose lorsque l'on travaille sur plusieurs dates.
      J'avais essayer de travailler avec
      to_char(date,'HH24:MI) between '08:00' and '08:30' mais cela ne fonctionne pas