Ausgabe nach Datum

tvtotal

Erfahrenes Mitglied
Hallo,

ich habe eine Tabelle mit 3 Spalten: ID, DATE, DESC

Date hat folgendes Format:
Code:
0000-00-00 00:00:00

Wie kann ich Werte abrufen, die dem Datum (inkl. Uhrzeit) am nächsten sind?

Am liebsten würde ich es direkt in MYSQL machen.

Gibt es sowas wie MIN(DATEDIFF() ) ?

Gruß & Dank tvtotal
 
Du kannst dir mit DATEDIFF ja den Unterschied zwischen der aktuellen Uhrzeit und dem gespeicherten Wert errechnen bzw. nach diesem Wert sortieren.

Dann noch mit LIMIT einschränken und du hast was du willst.
 
Wenn ich folgendes schreibe:

Code:
SELECT DATEDIFF('date',now())

bekomme ich diese Fehlermeldung:

The used SELECT statements have a different number of columns
 
Also meine Tabelle hat den Namen "werte" und das Datumsfeld hat den Namen "datum":

SQL:
SELECT DATEDIFF(datum, now()) AS unterschied FROM werte ORDER BY unterschied LIMIT 1

Damit deine Anweisung funktioniert musst du entweder auch eine Tabelle angeben oder du ersetzt "date" durch ein entsprechendes fixes Datum.
 
Wie sieht den die komplette SQL-Anweisung jetzt aus?

Was ich eben noch gesehen habe. Wenn "date" der Name des Feldes ist, dann lass die einfachen Anführungszeichen auch mal weg.
 
item: Du solltes ev. noch ABS() um die Differenz setzen um negative und positive Differnezen gleichwertig zu behandeln.
item: Wenn mehrere Einträge dieselbe Differenz haben, ist es nun Zufall welche das davon ausgewählt wird. Mit dem folgenden SQL habe ich das gelöst
SQL:
SELECT
	test.*
FROM
	test 
	INNER JOIN (			
						SELECT
									GROUP_CONCAT(id) AS id_list,
									ABS(DATEDIFF(field1, '2011-01-02 00:00:00')) AS diff
						FROM 		test
						GROUP BY diff
						ORDER BY diff
						LIMIT 	1
					) AS grp
		ON
			FIND_IN_SET(test.id,grp.id_list)
 
Zuletzt bearbeitet von einem Moderator:
Zurück