Sto cercando di trovare un valore datetime in un database mysql che corrisponde alla corrispondenza più vicina a un datetime che ho specificato, sto riscontrando qualche problema.Trova la data/ora più vicina a data/ora specificata nella query mysql
Il seguente pseudo codice è quello che voglio ottenere:
SELECT one FROM table WHERE datetimefield is closest to "2014-12-10 09:45:00" LIMIT 1
Grazie in anticipo
EDIT
Grazie per le risposte finora, come si scopre la query è un po 'più complicato di quanto pensassi inizialmente per ottenere il risultato desiderato, il metodo ABS funziona alla grande con alcune aggiunte.
La prossima domanda è, è comunque necessario ridurre i requisiti di prestazione per la seguente query?
SELECT DISTINCT timegenerated, *other values*
FROM table1 e INNER JOIN table2 dt
ON e.circuit = dt.circuit
WHERE dt.circuit IN ("2", "3", "4", "5", "6", "7", "8")
AND e.circuit != 1
AND dt.siteid = 435
ORDER BY ABS(TIMESTAMPDIFF(MINUTE, timegenerated, "2014-12-09 14:15:00")) LIMIT 7
O incorprate in modo che corrisponda più date come ho bisogno di essere in grado di eguagliare più datetimes specifici (forse fino a 90 giorni) è attualmente in fase di esecuzione per ogni singolo datetime da un altro array, ma mi rendo conto questo non è ottimale La query viene creata dinamicamente in PHP.
Il tempo di interrogazione è attualmente di circa 1,1 secondi per query, quindi eseguire 30 volte o più diventa problematico, la tabella ha centinaia di migliaia di righe.
Molte grazie ancora!
Grazie per questo, ho aggiornato il OP con una query aggiornata che funziona ma è molto performante se vuoi essere così gentile da far luce su di esso, esulta –
@JackHayfield. . . Quella porzione modificata dovrebbe essere un'altra domanda, non un addendum su questa domanda. –