[oracle] comparaison d'heures

Résolu
Gilles M -  
 Nozoum -
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. marina
     
    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;
    3
    1. Gilles M
       
      Bonjour Marina,
      Merci beaucoup pour cette réponse qui n'est pas tordue puisqu'elle fonctionne :-)
      A charge de revanche.
      Gilles
      0
  2. sebsauvage Messages postés 33284 Date d'inscription   Statut Modérateur Dernière intervention   15 684
     
    select * from ...
    where date between '2005-12-01 08:00' and '2005-12-01 08:30'


    si je ne me trompe pas.
    2
    1. Nozoum
       
      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, @+
      0
  3. bacchuss Messages postés 1165 Statut Membre 190
     
    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()
    0
    1. Gilles M
       
      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
      0