locked
Ajuda SQl Server 2008 RRS feed

  • Pergunta

  • Boa tarde,

    Tenho servidores com o SQL 2008. Estou tentando realizar a seguinte consulta:

    Select isnull(max(convert(char(10),data,103)),convert(char(10),GETDATE(),103)) as Data , DATEDIFF(minute,isnull(max(data),GETDATE()),getdate()) as HorasPassadas , DATEDIFF(day,isnull(max(convert(char(10),data,103)),convert(char(10),GETDATE(),103)),getdate()) as DiasPassados, CAST(DATEDIFF(MI, max(data), GETDATE()) / 60 AS VARCHAR(4)) + ':' + CAST(DATEDIFF(MI, max(data), GETDATE()) % 60 AS VARCHAR(4)) + ':' + CAST(DATEDIFF(SS, max(data), GETDATE()) % 60 AS VARCHAR(4)) as Tempo from tbFuncionarioHistorico where idfuncionario=2565089

    Em um dos servidores funciona perfeitamente porém no outro da o seguinte erro:

    Msg 241, Level 16, State 1, Line 1
    Conversion failed when converting date and/or time from character string.

    Será que é alguma configuração no servidor?

    Obrigado.

    terça-feira, 19 de março de 2013 20:53

Respostas

  • Alexandre resolvido. Percebi que o usuário do sql no servidor de produção foi criado como default language "portuguese" e no servidor de homologação como "English", foi somente alterar para "portuguese" no servidor de homologação que funcionou.

    De qualquer forma obrigado pela ajuda.

    • Marcado como Resposta Carmo Freitas quarta-feira, 20 de março de 2013 20:37
    quarta-feira, 20 de março de 2013 20:37

Todas as Respostas

  • Carmo, nos 2 servidores a tabela tbFuncionarioHistorico é identica ? tem exatamente os mesmos dados ? ao que indica ha uma string que não esta conseguindo ser convertida para datetime.

    Alexandre Matayosi Conde Mauricio.

    • Sugerido como Resposta Roberson Naves terça-feira, 19 de março de 2013 22:34
    terça-feira, 19 de março de 2013 21:23
  • Sim Alexandre um servidor é espelho do outro. Mesma Collation também. Obrigado.
    quarta-feira, 20 de março de 2013 17:14
  • Agora complicou, se os dados são identicos e o collation tambem...voce ja tentou fazer um select * nessa condição e verificar os campos que voce faz conversão de data para ver se ha algum caracter que não pode ser convertido (caracteres especiais, virgula, etc)?

    Alexandre Matayosi Conde Mauricio.

    quarta-feira, 20 de março de 2013 18:38
  • Então Alexandre o erro acontece especificamente nesse select:

    select
    DATEDIFF(day,isnull(max(convert(char(10),data,103)),convert(char(10),GETDATE(),103)),getdate()) as DiasPassados
    from tbFuncionarioHistorico where idfuncionario=2567724

    No inicio coloquei um select maior.

    Peguei o mesmo select na maquina de homologação, que é atualizado diariamente com os mesmo dados de produção e o erro aparece:

    Msg 241, Level 16, State 1, Line 1
    Conversion failed when converting date and/or time from character string.

    olhei as configurações dos servidores e estão idênticas. Muito estranho.


    quarta-feira, 20 de março de 2013 19:10
  • Alexandre resolvido. Percebi que o usuário do sql no servidor de produção foi criado como default language "portuguese" e no servidor de homologação como "English", foi somente alterar para "portuguese" no servidor de homologação que funcionou.

    De qualquer forma obrigado pela ajuda.

    • Marcado como Resposta Carmo Freitas quarta-feira, 20 de março de 2013 20:37
    quarta-feira, 20 de março de 2013 20:37