Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Abfrage nach Uhrzeit filtern

Dieses Thema im Forum "Oracle" wurde erstellt von derrichy, 13 Februar 2014.

  1. derrichy

    derrichy Neuer Benutzer

    Hallo, ich hab die Aufgabe bekommen Eine DB Abfrage zu machen, wo jeden Tag ein bestimmter Zeitraum abgefragt werden soll, ob dieses Ereignis dort stattgefunden hat.
    Die open_time Spalte ist auf Date formatiert.
    Das soll in etwa so aussehen
    Code:
    select number,titel,open_time
    from tabelle
    where open_time 'jeden Tag zwischen 17:00 Uhr und 07:00 Uhr'
    and open_group = 'Gruppe1';
    Leider bekomme ich es in der Datumsabfrage nicht hin, wie ich 'jeden tag von 17:00 Uhr bis 07:00' angeben muß.
    Ich hoffe, es ist verstädlich ausgedrückt
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Zuerst einmal: ein DATE ist ein DATE. Heute z.B. ist der 2014-02-13. Siehst Du hier eine Uhrzeit? Du sagst, von 17 Uhr bis 7 Uhr. Ist die Ende-Zeit nach der Startzeit? Dann wäre 7 Uhr also am nächsten Tag.
    Willst Du also nun das Von-Bis in der DB speichern, und prüfen, ob ein Zeitpunkt (20 Uhr) in dem Bereich liegt, oder willst Du einen Zeitpunkt in der DB speichern, und vergleichen, ob ein Zeitraum da paßt? (Du speichertst 20 Uhr in der DB und prüfst, ob 21-22 Uhr an diesem Zeitpunkt war) Oder willst Du eine Zeitspanne in der DB speichern (von 20 bis 24 Uhr) und schauen, ob z.B. 21 bis 23 Uhr vollständig in dem Bereich liegt, vom Bereich geschnitten wird oder außerhalb ist?
     
  3. derrichy

    derrichy Neuer Benutzer

    Okaaaay.
    Also zum Date hast Du vollkommen Recht. Wenn ich ein select auf open_time mache, erscheint auch nur
    Code:
    14 02 14
    Exportiere ich das ganze nach excel
    Code:
    14 02 14 05:30:17
    Also scheint ja irgend ein Zeitstempel abgelegt worden sein.
    Ja, 7 Uhr ist am nächsten Tag. Ich soll also prüfen, ob es bestimmte Auffälligkeiten in der Zeit von 17 uhr bis nächsten Tag 7 Uhr gibt. Und nur in diesem Zeitraum. Die Auffäligkeiten können in der Support Zeit von 7-17 Uhr ruhig sein, aber nicht nach der Support Zeit.
    Hört sich sehr kompliziert an, oder?
     
  4. akretschmer

    akretschmer Datenbank-Guru

    Code:
    test=*# select * from derrichy;
     id |  time
    ----+---------------------
      1 | 2014-02-13 12:00:00
      2 | 2014-02-13 15:00:00
      3 | 2014-02-13 18:00:00
      4 | 2014-02-14 03:00:00
      5 | 2014-02-14 10:00:00
    (5 rows)
    
    test=*# select *, extract(hour from time) from derrichy where extract(hour from time) between 17 and 24 or extract(hour from time) between 0 and 7;
     id |  time  | date_part
    ----+---------------------+-----------
      3 | 2014-02-13 18:00:00 |  18
      4 | 2014-02-14 03:00:00 |  3
    (2 rows)
    
    
    Vielleicht so?
     
  5. Hony%

    Hony% Datenbank-Guru

    Ich spekuliere einfach mal. Oracle legt einen DATE Wert intern mit dem vollständigen Timestamp ab. Es wäre also möglich, dass du an die Uhrzeit kommst wenn du den Attributtyp änderst oder einen cast auf DATETIME machst.
     
  6. derrichy

    derrichy Neuer Benutzer

    Vielen Dank.
    Kann es heute abend erst in der Nachtschicht testen und werde dann ein feedback geben können :)
     
  7. derrichy

    derrichy Neuer Benutzer

    Okay, habe es hinbekommen
    Mit einem
    Code:
    select distinct A1.nummer,to_char (A1.open_time, 'DD:MM:YY HH24:MI') as neu,A1.brief_description,A2.nummer,A2.empfaenger
    from tabelle_1 A1, tabelle_2 A2
    where A1.nummer=A2.nummer
    and A1.open_time between'01.01.14' and '14.02.14'
    and (to_char (A1.open_time, 'HH24:MI') between '17:00'and '23:59'
    or to_char (A1.open_time, 'HH24:MI') between '00:00'and '07:00')
    and A1.open_group like'123%'
    and A2.empfaenger like 'gruppe1'
    and not a1.brief_description like '%onnectio%'
    group by a2.nummer,a1.nummer,a1.open_time,a1.brief_description,a2.empfaenger
    order by a1.nummer
    hat es dann geklappt.
    Vielen Dank für die Denkanstöße
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden