2014-07-21 4 views
0

Bonjour Mesdames et Messieurs,Oracle Date/heure manipulation requête

J'ai problème à trouver une solution dans l'oracle SQL pour ma requête:

Ceci est un exemple de la requête que j'ai besoin:

Select Result_Date as hour , Type , Count(Id) as Number From Results 
Where Result_Date Between Today'06:00' And today'14:00' 
group by result_date , type 

La date du résultat contient l'heure, le format de la date du résultat est l'horodatage. Comment puis-je accomplir cette requête sans entrer la date dans l'instruction entre, seulement les heures entre je veux rechercher aujourd'hui.

Si vous avez des idées s'il vous plaît faites le moi savoir, toute idée est la bienvenue.

+0

la fonction to_char est ce que vous voulez. –

+0

J'ai déjà essayé le to_char et il ne compare pas les chaînes –

+0

J'ai corrigé le code, ajouté aujourd'hui avant les heures –

Répondre

2

Vous pouvez utiliser la fonction trunc() sur horodatages, alors cela pourrait faire ce que vous voulez:

Select trunc(Result_Date, 'HH24') as hour , Type , Count(Id) as Number From Results 
Where trunc(Result_Date, 'HH24') Between '06:00' And '14:00' and 
     trunc(Result_Date) = trunc(sysdate) 
group by trunc(Result_Date, 'HH24'), type ; 

Note:

trunc() sur un défaut de date à la journée. Vous pouvez ajouter le format spécifique pour cela si vous le souhaitez.

+0

Je en ai aussi besoin seulement pour la journée, comme entre current_day '06: 00 'et current_day '14 : 00 ' –

0

EDIT: Voici ce qui a fonctionné pour moi

Select to_number(extract(hour from Result_Date)) as hour , Type , Count(Id) as Number From Results Where To_Date(Trunc(Result_Date)) = To_Date(Trunc(Current_Timestamp)) 
     and to_number(extract(hour from Result_Date)) Between 6 and 14  
      group by to_number(extract(hour from)Result_Date) as hour , type 

@Gordon Linoff, merci DOR la ​​suggestion avec le tronc, il m'a aidé à les allouer