[PHP] Timestamps vergleichen

topfkanne

♪ ♫
ID: 80534
L
20 April 2006
1.578
159
Hallo,

ich hab nen Problem und weiß nicht weiter.

Ich habe eine Tabelle "Termine", in der steht id, von und bis.
jetzt möchte ich alle Termine zwischen 2 vorgegebenen von(2) und bis(2) anzeigen.

Beispiel:

SELECT * FROM termine WHERE von and bis between von(2) and bis(2)

Natürlich geht das nicht, es dient nur zur veranschaulichung wie ich es gern hätte als Ergebnis ;) - verglichen weden übrigens ausschließlich Timestamps!

Ich hoffe da gibts ne kompakte Lösung.

Grüße
 
... WHERE von BETWEEN timestamp1 AND timestamp2 AND bis BETWEEN timestamp1 AND timestamp2

Ist es das, was du suchst, oder habe ich dich falsch verstanden?
 
Ich habe eine Tabelle "Termine", in der steht id, von und bis.
jetzt möchte ich alle Termine zwischen 2 vorgegebenen von(2) und bis(2) anzeigen.

Hi,

zwischen zwei vorgegebenen Werten -> BETWEEN. Wieso sollte das nicht funktionieren ?

Bsp.:

SELECT id FROM foo WHERE start BETWEEN 1 AND 10

liefert alle ids, bei deren Eintrag start zwischen 1 und 10 ist.
 
Wenn man davon ausgehen kann, dass von immer kleiner als bis ist, geht's auch so:
Code:
... WHERE von >= timestamp1 AND bis <= timestamp2
Ist unter der besagten Prämisse äquivalent zu MrToiz' Variante, sollte aber etwas effizienter sein.
 
Wenn man davon ausgehen kann, dass von immer kleiner als bis ist, geht's auch so:
Code:
... WHERE von >= timestamp1 AND bis <= timestamp2
Ist unter der besagten Prämisse äquivalent zu MrToiz' Variante, sollte aber etwas effizienter sein.

wie kommst du drauf dass das effizienter ist? der sql server zerlegt das kommando auch nur wieder in von >= 0 <= bis. ;) also effektivitäts steigerung +/- null.
 
Hätte jetzt gedacht, dass der in der ersten Variante 4 Vergleiche durchführt (von>=ts1, von<=ts2, bis=>ts1 und bis<=ts2). Da wäre die zweite Variante mit 2 Vergleichen ja schon effizienter. Aber wenn MySQL das selbst optimiert, bin ich ruhig und hab nix gesagt. ;)
 
Hätte jetzt gedacht, dass der in der ersten Variante 4 Vergleiche durchführt (von>=ts1, von<=ts2, bis=>ts1 und bis<=ts2). Da wäre die zweite Variante mit 2 Vergleichen ja schon effizienter. Aber wenn MySQL das selbst optimiert, bin ich ruhig und hab nix gesagt. ;)

ah sorry... problem nicht richtig verstanden. hab nicht ganz gecheckt dass da zwei felder und 2 timestamps im spiel sind. so wäre deine variante natürlich effektiver... mysql kann ja nicht wissen das schon von >= ts1 bis >= ts1 ausschließt. da mysql ja nicht weiß das bis immer größer ist als von... (ok rein theroedisch wäre es möglich, dass würde aber das thema sprengen)