julia4 Geschrieben 18. Februar 2015 Teilen Geschrieben 18. Februar 2015 Ich habe eine Datenbank mit BeginnDate und EndDate. Nun möchte ich von einem bestimmten Tag alle Daten, jede Stunde herausfiltern. wenn BeginnDate und Enddate über mehrere Stunden gehen, dann werden die Daten mehrfach ausgelesen. Und ich habe mir das so gedacht, dass ich sage, wenn "between BeginnDate and EndDate" < Unixtimestamp dann... Leider verstehe ich das nicht oder stehe ich auf dem Schlauch. Muss ich dann sowas machen wie Select * from Table where BeginDate between BeginnDate and EndDate < 1417132800 and EndDate between BeginnDate and EndDate < 1417132800 Würde mir bitte jemand von euch auf die Sprünge helfen? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Goulasz Geschrieben 18. Februar 2015 Teilen Geschrieben 18. Februar 2015 Hallo julia4! Ich verstehe ehrlich gesagt nicht so ganz, was du machen willst. [table=width: 500, class: grid, align: left] [tr] [td]ID[/td] [td]Wert[/td] [td]DateBegin[/td] [td]DateEnd[/td] [/tr] [tr] [td]1[/td] [td]Hallo[/td] [td]01.02.2015[/td] [td]05.02.2015[/td] [/tr] [tr] [td]2[/td] [td]Welt[/td] [td]02.02.2015[/td] [td]06.02.2015[/td] [/tr] [tr] [td]3[/td] [td]foo[/td] [td]03.02.2015[/td] [td]07.02.2015[/td] [/tr] [tr] [td]...[/td] [td]...[/td] [td]...[/td] [td]...[/td] [/tr] [/table] Und mit deiner Abfrage willst du jetzt "Gib mir alle Datensätze, für die zutrifft, dass @EingabeDatum zwischen [DateBegin] und [DateEnd] liegt." bezwecken? Wie viele Datensätze schreibst du denn da rein? Bzw. in welchem Intervall. Treffe ich mit der Vermutung deine Intention oder geht das völlig an deiner Anforderung vorbei? Gruß, Goulasz Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
mfk'); DROP TABLE Users;-- Geschrieben 18. Februar 2015 Teilen Geschrieben 18. Februar 2015 ... where 1417132800 between BeginnDate and EndDate Wenn die Typen direkt vergleichbar sind. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
julia4 Geschrieben 18. Februar 2015 Autor Teilen Geschrieben 18. Februar 2015 Doch du triffst es schon. Also ich will aus einer Bestehenden DB eine Statistik erzeugen. Dort sollen Anrufe gezählt werden. Und das für jede Stunde des Tages. Und dann will ich wissen wieviele Anrufe in dieser Stunde stattgefunden haben. Wenn sich dieser anruf über mehrere Stunden erstecken sollte, dann soll er sowohl in der einen Stunde als auch in der anderen gezählt werden. Also will ich die DB fragen: Gib mir alle Datensätze deren Zeitstempel zwischen Beginn und Ende < timestamp ist. Ich kann leider nicht sagen, gib mir nur den BeginDate, denn es könnte sein, dass ein Anruf theoretisch über mehrere Stunden geht. Deshalb brauche ich auch die zwischenräume. Ich hoffe ich konnte mich einigermaßen verständlich ausdrücken. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
julia4 Geschrieben 18. Februar 2015 Autor Teilen Geschrieben 18. Februar 2015 ... where 1417132800 between BeginnDate and EndDate Wenn die Typen direkt vergleichbar sind. Ja den Ansatz verstehe ich, aber ich will ja wissen, ob ein Zeitraum (bei mir eine Stunde) sich zwischen BeginnDate und EndDate befindet. Also nehmen wir an zwischen 00:01 Uhr und 01:00 kamen 20 Anrufe rein. Dann -frage an die Tabelle1- gib mir die aus die zwischen BeginnDate und EndDate angerufen haben. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
mfk'); DROP TABLE Users;-- Geschrieben 18. Februar 2015 Teilen Geschrieben 18. Februar 2015 Also nehmen wir an zwischen 00:01 Uhr und 01:00 kamen 20 Anrufe rein. Dann -frage an die Tabelle1- gib mir die aus die zwischen BeginnDate und EndDate angerufen haben. Und welche Anrufe soll die Abfrage jetzt liefern? - Die, die vor 00:01 angefangen und nach 1:00 aufgehört haben - Die, die nach 00:01 angefangen und nach 1:00 aufgehört haben - Die, die vor 00:01 angefangen und vor 1:00 aufgehört haben - Die, die nach 00:01 angefangen und vor 1:00 aufgehört haben - Die, die zwischen 00:01 und 1:00 angefangen haben - Die, die zwischen 00:01 und 1:00 aufgehört haben - Die, die zwischen 00:01 und 1:00 angefangen oder aufgehört haben und mindestens 1 Stunde gedauert haben Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
mfk'); DROP TABLE Users;-- Geschrieben 18. Februar 2015 Teilen Geschrieben 18. Februar 2015 Ich vermute folgendes: Du möchtest die Datensätze, die zwischen 00:01 und 01:00 angefangen ODER zwischen 00:01 und 01:00 aufgehört ODER vor 00:01 angefangen UND nach 01:00 aufgehört haben Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
julia4 Geschrieben 18. Februar 2015 Autor Teilen Geschrieben 18. Februar 2015 Ich vermute folgendes: Du möchtest die Datensätze, die zwischen 00:01 und 01:00 angefangen ODER zwischen 00:01 und 01:00 aufgehört ODER vor 00:01 angefangen UND nach 01:00 aufgehört haben Ja genau! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
mfk'); DROP TABLE Users;-- Geschrieben 18. Februar 2015 Teilen Geschrieben 18. Februar 2015 Das kannst du doch 1:1 in SQL umsetzen: ... where BeginnDate between t0 and t1 OR EndDate between t0 and t1 OR (BeginnDate < t0 AND EndDate > t1) (t0 und t1 als Platzhalter für Anfang und Ende deines gewünschten Zeitraums) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
julia4 Geschrieben 18. Februar 2015 Autor Teilen Geschrieben 18. Februar 2015 Ach ja klar, da habe ich viel zu kompliziert gedacht. Vielen Dank! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
mfk'); DROP TABLE Users;-- Geschrieben 18. Februar 2015 Teilen Geschrieben 18. Februar 2015 Mir fällt gerade auf, dass sich das vereinfachen lässt: ... where BeginnDate < t1 AND EndDate > t0 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
julia4 Geschrieben 18. Februar 2015 Autor Teilen Geschrieben 18. Februar 2015 Denke nicht dass das funktioniert. Weil ich spätestens im nächsten zeitstempel bei t1 und t2 dann auch alle BeginnDate drin hab die in t0 sind. Ausserdem kann das EndDate doch auch in t0 liegen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
mfk'); DROP TABLE Users;-- Geschrieben 18. Februar 2015 Teilen Geschrieben 18. Februar 2015 Denke nicht dass das funktioniert. Weil ich spätestens im nächsten zeitstempel bei t1 und t2 dann auch alle BeginnDate drin hab die in t0 sind.Aber nur, wenn EndDate nach t1 liegt. Und dann ist das ja auch gewünscht. Beachte, dass BeginnDate mit dem Ende des zu prüfenden Zeitraums verglichen wird, und EndDate mit dem Anfang. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.