Se você precisar usar um formato de data baseado em string, escolha um que seja seguro e funciona em todas as instâncias do SQL Server, independentemente do formato de data, idioma e configurações regionais.
Esse formato é conhecido como ISO-8601 formato e é ou
YYYYMMDD (note: **NO** dashes!)
ou
YYYY-MM-DDTHH:MM:SSS
para um
DATETIME
coluna. Então, em vez de
Convert(datetime, '28/11/2012', 103)
você deveria usar
CAST('20121128' AS DATETIME)
e então você deve estar bem.
Se você estiver no SQL Server 2008 - você também pode usar
DATE
(em vez de DATETIME
) para casos em que você só precisa da data (sem parte do tempo). Isso seria ainda mais fácil do que usar DATETIME
e ter a parte do tempo sempre sendo 00:00:00