Dies ist sehr alt, aber angesichts der vielen Erfahrungen, die ich mit Daten gemacht habe, sollten Sie Folgendes berücksichtigen: Benutzer verwenden unterschiedliche regionale Einstellungen. Einige Personen (und einige Datenbanken / Computer, abhängig von den regionalen Einstellungen) lesen dies möglicherweise Datum 11/12/2016 als 11. Dezember 2016 oder 12. November 2016. Darüber hinaus wird der an die MySQL-Datenbank gelieferte 16.11.12 intern in den 12. November 2016 konvertiert, während die auf einem regionalen Einstellungscomputer in Großbritannien ausgeführte Access-Datenbank interpretiert und interpretiert wird Speichern Sie es als 16. November 2012.
Aus diesem Grund habe ich es mir zur Aufgabe gemacht, bei jeder Interaktion mit Daten und Datenbanken explizit zu sein. Daher gebe ich meine Abfragen und Programmiercodes immer wie folgt an:
SELECT FirstName FROM Students WHERE DoB >= '11 Dec 2016';
Beachten Sie auch, dass Access das # akzeptiert, also:
SELECT FirstName FROM Students WHERE DoB >= #11 Dec 2016#;
MS SQL Server wird dies jedoch nicht tun, daher verwende ich immer "'" wie oben, was beide Datenbanken akzeptieren.
Und wenn ich dieses Datum von einer Variablen im Code erhalte, konvertiere ich das Ergebnis immer wie folgt in einen String:
"SELECT FirstName FROM Students WHERE DoB >= " & myDate.ToString("d MMM yyyy")
Ich schreibe dies, weil ich weiß, dass einige Programmierer manchmal nicht scharf genug sind, um die inhärente Konvertierung zu erkennen. Es gibt keinen Fehler für Daten <13, nur unterschiedliche Ergebnisse!
Fügen Sie für die gestellte Frage einen Tag zum letzten Datum hinzu und führen Sie den Vergleich wie folgt durch:
dated >= '11 Nov 2016' AND dated < '15 Nov 2016'