Jeśli musisz użyć formatu daty opartego na ciągach, wybierz taki, który jest bezpieczny i działa w każdej instancji SQL Server, niezależnie od formatu daty, języka i ustawień regionalnych.
Ten format jest znany jako ISO-8601 format i to albo
YYYYMMDD (note: **NO** dashes!)
lub
YYYY-MM-DDTHH:MM:SSS
na DATETIME
kolumna.
Więc zamiast
Convert(datetime, '28/11/2012', 103)
powinieneś użyć
CAST('20121128' AS DATETIME)
i wtedy powinno być dobrze.
Jeśli korzystasz z SQL Server 2008 - możesz również przyjrzeć się użyciu DATE
(zamiast DATETIME
) w przypadkach, gdy potrzebujesz tylko daty (bez czasu). Byłoby to jeszcze łatwiejsze niż użycie DATETIME
i mając zawsze część czasu na 00:00:00