2017-06-14 3 views
0

So überprüfen Sie, ob mein aktueller Zeitstempel zwischen einem Zeitbereich liegt.So überprüfen Sie, ob die aktuelle Zeit zwischen zwei Zeitstempeln in Oracle liegt

für ex: Ich möchte überprüfen, meine aktuelle Zeit (sagen wir 03:00 Uhr) fällt zwischen 18:00 Uhr und 19:00 Uhr.

Wie überprüfe ich dies in Oracle?

+2

Meinen Sie, wollen Sie sehen, ob die Zeit der Tage Komponente zwischen 6.00 Uhr ist und 19 Uhr, unabhängig vom Datum? Wie werden die Start- und Endzeitstempel eingegeben (oder gespeichert)? Insbesondere in welchem ​​Datentyp? – mathguy

+0

Einverstanden. Wenn Sie überprüfen, ob Sie sich gerade in einem definierten Zeitfenster befinden, ist das eine völlig andere Lösung als zu überprüfen, ob Sie sich zwischen einer Reihe wiederkehrender Geschäftszeiten befinden. – SandPiper

Antwort

2
SELECT CASE 
     WHEN SYSDATE - TRUNC(SYSDATE) BETWEEN 17.5/24 AND 18.5/24 
     THEN 'Is between 17:30 and 18:30' 
     ELSE 'Not between 17:30 and 18:30' 
     END 
FROM DUAL; 

oder

SELECT CASE 
     WHEN SYSDATE BETWEEN TRUNC(SYSDATE) + INTERVAL '17:30' HOUR TO MINUTE 
          AND TRUNC(SYSDATE) + INTERVAL '18:30' HOUR TO MINUTE 
     THEN 'Is between 17:30 and 18:30' 
     ELSE 'Not between 17:30 and 18:30' 
     END 
FROM DUAL; 
+0

Wie schreibe ich, wenn ich zwischen 17:30 und 18:30 Uhr einchecken möchte? Wo füge ich Minuten hinzu? – Santosh

+0

@Santosh Aktualisiert – MT0

+0

@Santosh - in vielen Fällen, in geschäftlichen Begriffen, bedeutet "zwischen 17:30 und 18:30"> = 17:30 aber <18:30. (Vor allem, wenn man mehrere aufeinanderfolgende Intervalle betrachtet.) Wenn ja, dann können Sie die meisten Lösungen von MT0 verwenden, aber mit Ungleichungen, wie Torsten in seiner Antwort gezeigt hat; BETWEEN hat an beiden Enden nicht strikte Ungleichungen. – mathguy

1

I Strings für den Vergleich verwenden würde:

select 
    case when to_char(sysdate, 'HH24:MI') >= '18:00' 
     and to_char(sysdate, 'HH24:MI') < '19:00' then 'YES' else 'NO' 
    end as in_time_range 
from dual; 
Verwandte Themen