Seite 1 von 1

Hilfe bei einem SQL Statement (Differenz zwischen Tagen)

Verfasst: 02.01.2007, 21:04
von pvdb
Hallo,

ich bekomme ein bestimmte SQL Anweisung nicht hin. In meiner Tabelle habe ich neben meinen Daten die Spalten date1 und date2. Beide sind vom Typ DateTime. Nun möchte ich gerne alle Datensätze Abfragen, die eine Zeitdifferenz von maximal 10 Tagen haben, also wo date2 - date1 < 10 tage.

Abfragen wie z.B.

select * from table where date2 - date1 < 10

gehen ja nicht.

Kann mir da jemand helfen wie sich dieses Problem lösen lässt?

Phil

Verfasst:
von

Verfasst: 02.01.2007, 21:07
von w3news
ich würde es mit timestamp machen,also entweder gleich den timestamp in die abelle eintragen oder das datum umwandeln, da weiß ich aber jetzt nicht ob das überhaupt geht...

Verfasst: 02.01.2007, 21:12
von net(t)worker
select * from table where DATEDIFF(date1, date2) < 10

wenn nicht geht, dann so:

select feld1, feld 2, feld3, DATEDIFF(date1, date2) as differenz from table where differenz < 10

https://dev.mysql.com/doc/refman/5.0/en ... tions.html

Verfasst: 02.01.2007, 21:16
von net(t)worker
w3news hat geschrieben:ich würde es mit timestamp machen,also entweder gleich den timestamp in die abelle eintragen oder das datum umwandeln, da weiß ich aber jetzt nicht ob das überhaupt geht...
mit dem Umwandeln in Unixtimestamp und dann die differenz in sekunden ermitteln war auch mein erster Gedanke... bin dann bei nachschlagen des befehls über DATEDIFF() gestolpert... und das macht ja genau das was er möchte...

Verfasst: 02.01.2007, 22:30
von w3news
...DATEDIFF(date1, date2)...
wieder dazu gelernt ;)

Verfasst: 03.01.2007, 09:04
von pvdb
vielen dank für die hilfe. klappt bestens. hatte es mir etwas komplexer vorgestellt, da ich nicht wusste das es dafür ne funktion gibt.

phil

Verfasst: 03.01.2007, 12:52
von acersun
w3news hat geschrieben:ich würde es mit timestamp machen,also entweder gleich den timestamp in die abelle eintragen oder das datum umwandeln, da weiß ich aber jetzt nicht ob das überhaupt geht...
das müßte so gehen:

SELECT * FROM table WHERE UNIX_TIMESTAMP(date2)-UNIX_TIMESTAMP(date1) < 60*60*24*10