Abfrage nach Uhrzeit filtern

derrichy

Neuer Benutzer
Beiträge
4
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
 
Werbung:
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

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?
 
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?
 
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?

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?
 
Werbung:
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
 
Zurück
Oben