Zoeken met datum notatie
Kees Mulder
05/02/2016 12:44:25Ik wil graag in mijn tabel een datum zoeken. Alleen ik krijg het niet voor elkaar. Ik wil bijv. zoeken op 05-02-2016 maar als ik dat intik kom er niets, wel als ik 2016-02-05 doe.
Ik heb in de selectie van de table deze regel opgenomen:
Ik heb in de selectie van de table deze regel opgenomen:
PHP hulp
21/11/2024 19:48:24De notatie in MySQL is 2016-02-05 (YYYY-MM-DD). Dus je zult je datum die je invoert moeten omzetten naar deze Engelse variant.
Bo Ter Ham
05/02/2016 13:12:08Het is niet mogelijk om een alias te gebruiken in je WHERE, wat je wel kunt doen is de DATE_FORMAT functie uitvoeren in de WHILE clause zelf:
Thomas van den Heuvel
05/02/2016 13:17:16Of de datum omzetten naar het formaat zoals deze in de database wordt gebruikt voordat deze in de query wordt verwerkt.
Ben van Velzen
05/02/2016 13:38:30En ik zou voor de optie van Thomas gaan, want zoeken op de output van een functie is een drama voor je performance. Er kan immers geen index gebruikt worden.
Het zoeken met een string- of datumfunctie in een WHERE-clausule heeft twee samenhangende: alle datums moeten voor de vergelijking worden omgezet en er kan geen index meer gebruikt worden. Ik zou de datum inderdaad ook omzetten in de ISO-notatie van MySQL, bijvoorbeeld zo:
Door de sprintf() ben je dan meteen af van het verschil tussen 05 en 5.
Code (php)
Door de sprintf() ben je dan meteen af van het verschil tussen 05 en 5.