Ich möchte dynamisch nach einem Datum in meiner Datenbank nach meinem $ Dateneingabe suchen.DATETIME vs LIKE zu einer dynamischen Suche SQL
Datumsangaben werden als Datum-Uhrzeit gespeichert und werden normalerweise als "2016-05-11" angezeigt.
mit einer MySQL-DB meiner Klausel war:
Select * From Table WHERE (Table.date LIKE '$data%')
Also, wenn der Benutzer „20“ tritt die Ergebnisse alle Daten, die mit 20 beginnen Wenn der Benutzer eingibt „2016-05“ die Ergebnisse Seien Sie alle Termine, die mit 2016-05 beginnen, so dass meine Suche perfekt funktioniert.
Bei der Bereitstellung über einen SQL Server 2008. Ich realisierte 2 Dinge.
1) Wenn ich die Funktion LIKE als solche
verwendenSelect * From Table WHERE (Table.date LIKE '%$data$%')
Die Funktion wird für einen Wert von „2016“ arbeiten, würde aber 0 Ergebnisse zurück, wenn ein Wert von „2016-“ eingegeben wird.
2) Wenn ich die Funktion DATETIME- als solche
Select * From Table WHERE (DATEPART(year, Table.date) LIKE(OR)= '$data')
Die Funktion wird korrekten Werte zurück, wenn $ data = 2016, wird aber gleich Null Werte zurückgeben, wenn die ‚201‘ $ data = zum Beispiel, daher mach es nicht dynamisch.
Was mache ich falsch?
Die Problem ist bei der Eingabevalidierung. Wenn ein Benutzer "20" eingeben kann, kann er auch "fred" oder "2016-02-30" eingeben. –
Ich benutze Ajax Anrufe also wenn sie Fred eingeben. Sie werden keine Ergebnisse bekommen. Das ist kein Problem? Bin ich nicht richtig? – MakDo