Um cliente migrou um banco de dados do SQL Server 2000 para 2012.
O aplicativo deles apresenta problemas depois. A causa é a seguinte invocação de função:
SELECT {fn curtime() }
Que retornou data + hora no SQL 2000 ('2017-01-20 07:24:26.997'), mas retorna apenas a parte do tempo ('07:24:26.997') no SQL 2012.
O modo de compatibilidade não pode ser definido para além de 90 (SQL 2005).
Dado que a aplicação não pode ser alterada, existe alguma solução alternativa para este problema?
A resposta curta é que não há como corrigir isso sem alterar o aplicativo.
Ou
{fn curtime() }
seja, uma função ODBC Scalar que o SQL Server interpreta, mas realmente não deve ser usada nativamente.Use
GetDate()
em vez disso.(Suponho que você poderia usar
{fn curdate() }
combinado com{fn curtime() }
)Eu não tenho mais uma instalação do SQL 2000 (isso foi há 17 anos!), então não posso testar como era o {fn curtime() }, mas eu teria assumido que ele só retornava a hora. Talvez não, mas não faz muita diferença agora - você está um pouco preso.
A única opção é alterar o aplicativo. A justificativa não deve ser muito difícil - um aplicativo que funciona apenas no SQL Server 2000 não é realmente aceitável, que está sem suporte há muito tempo - é um sistema de 17 anos.
Este post anterior é semelhante e a resposta é boa e fornece mais algumas informações.
Isso não é realmente relevante, mas vou adicioná-lo (você pode simplesmente ignorar este bit):
curtime()
é uma função embutida no MySql . Seu caso é definitivamente a sintaxe ODBC, mas é semelhante ao do MySql, então pensei em adicioná-lo como curiosidades.