Verwenden Sie anstelle von '2013-04-12', dessen Bedeutung von der lokalen Kultur abhängt, '20130412', das als kulturinvariantes Format anerkannt ist.
Wenn Sie mit 4. Dezember vergleichen wollen th , sollten Sie ‚20131204‘ schreiben. Wenn Sie mit dem 12. April vergleichen möchten th , sollten Sie ‚20130412‘ schreiben.
Der Artikel Schreiben internationaler Transact-SQL-Anweisungen aus der SQL Server-Dokumentation erläutert, wie Anweisungen geschrieben werden, die kulturinvariant sind:
Anwendungen, die andere APIs oder Transact-SQL-Skripte, gespeicherte Prozeduren und Trigger verwenden, sollten die nicht getrennten numerischen Zeichenfolgen verwenden. Zum Beispiel yyyymmdd als 19980924.
BEARBEITEN
Da Sie ADO verwenden, besteht die beste Option darin, die Abfrage zu parametrisieren und den Datumswert als Datumsparameter zu übergeben. Auf diese Weise vermeiden Sie das Formatproblem vollständig und profitieren auch von den Leistungsvorteilen parametrisierter Abfragen.
AKTUALISIEREN
Um das ISO 8601-Format in einem Literal verwenden zu können, müssen alle Elemente angegeben werden. Zitat aus dem Abschnitt ISO 8601 der datetime-Dokumentation
Um das ISO 8601-Format zu verwenden, müssen Sie jedes Element im Format angeben. Dies schließt auch das T, die Doppelpunkte (:) und den Punkt (.) Ein, die im Format angezeigt werden.
... der Bruchteil der zweiten Komponente ist optional. Die Zeitkomponente wird im 24-Stunden-Format angegeben.