Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Finden Sie Datetime, das dem angegebenen Datetime in der MySQL-Abfrage am nächsten liegt

Die Schlüsselidee ist die Verwendung von order by und limit :

Wenn Sie den nächsten davor haben möchten:

SELECT one
FROM table
WHERE datetimefield <= '2014-12-10 09:45:00'
ORDER BY datetimefield DESC
LIMIT 1;

Wenn Sie in beide Richtungen den nächsten Wert haben möchten, verwenden Sie TIMESTAMPDIFF() :

ORDER BY abs(TIMESTAMPDIFF(second, datetimefield, '2014-12-10 09:45:00'))
LIMIT 1