Qui è ancora un altro grande esempio del perché è necessario implementare campi data/ora in MySQL utilizzando la data, datetime, o tipi di campi data/ora e lascia che l'applicazione si occupi di come formattare la data per l'output.
In questo momento si sta per bisogno di fare qualcosa di simile:
SELECT * FROM table_name
WHERE username = '[email protected]'
AND STR_TO_DATE(date_time, '%a, %e %b %Y %H:%i:%s') >= STR_TO_DATE('Thu, 11 Jul 2013 00:00:00', '%a, %e %b %Y %H:%i:%s');
Questa query non sarà in grado di utilizzare qualsiasi indice che avete sul vostro date_time
campo, quindi la query sarà molto inefficiente. Sarà necessario eseguire una scansione completa della tabella, convertendo il valore di ogni riga per effettuare il confronto.
Che cosa si dovrebbe fare è:
SELECT * FROM table_name
WHERE username = '[email protected]'
AND date_time >= STR_TO_DATE('Thu, 11 Jul 2013 00:00:00', '%a, %e %b %Y %H:%i:%s');
Qui se avete il vostro campo nel formato datetime MySQL, avete solo bisogno di convertire l'ingresso a un questo formato per la corrispondenza. Dal momento che i tuoi dati di campo sono già in questo formato, sarai in grado di utilizzare un indice per la ricerca.
fonte
2013-07-15 17:03:58
Controllare il tipo di dati DATE_TIME. È varchar o data? Il tipo di dati –
è varchar – colourtheweb
È necessario convertire la stringa in una data, non la data in una stringa. – Barranka