Zamiast „2013-04-12”, którego znaczenie zależy od lokalnej kultury, użyj „20130412”, który jest rozpoznawany jako format niezmienny w kulturze.
Jeśli chcesz porównać z 4 grudnia, powinieneś napisać „20131204”. Jeśli chcesz porównać z 12 kwietnia, powinieneś napisać „20130412”.
Artykuł Write International Transact-SQL Statements z dokumentacji SQL Server wyjaśnia, jak pisać instrukcje, które są niezmienne kulturowo:
Aplikacje korzystające z innych interfejsów API lub skryptów Transact-SQL, procedur składowanych i wyzwalaczy powinny używać nierozdzielonych ciągów liczbowych. Na przykład rrrrmmdd jako 19980924.
EDYTUJ
Ponieważ używasz ADO, najlepszą opcją jest sparametryzowanie zapytania i przekazanie wartości daty jako parametru daty. W ten sposób całkowicie unikniesz problemu z formatem i uzyskasz korzyści związane z wydajnością zapytań parametrycznych.
AKTUALIZUJ
Aby użyć formatu ISO 8601 w literale, wszystkie elementy muszą być określone. Cytując z sekcji ISO 8601 dokumentacji datetime
Aby użyć formatu ISO 8601, należy określić każdy element formatu. Obejmuje to również T, dwukropki (:) i kropkę (.), które są wyświetlane w formacie.
... ułamek drugiego składnika jest opcjonalny. Składnik czasu jest określony w formacie 24-godzinnym.