Erro de conversão de data - out-of-range value

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
rhicky
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 58
Registrado em: Sex, 20 Jul 2007 9:48 am
Localização: S. J. do Rio Preto/SP
Rhicky

Amigos,
Gostaria de saber por que o erro abaixo ocorrem em SQL Server:

The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.
Código da Informação: [0dc060f56fed3fedf055af476510b102]

A consulta utilizada é a seguinte:

Selecionar tudo

select a.chapa, a.nome, b.cpf, convert(varchar, a.dataadmissao, 103) DTADM, c.nome, d.descricao, 50 vr
from pfunc a, ppessoa b, pfuncao c, psecao d
where b.codigo = a.codpessoa
and c.codcoligada = a.codcoligada
and d.codcoligada = a.codcoligada
and c.codigo = a.codfuncao
and d.codigo = a.codsecao

and a.chapa not in
(
select chapa
from vadvertencia x
where x.codcoligada = 1
and x.datahora between 
CONVERT(varchar, CAST(
'21' + '/' + cast((select case when mescomp = 1 then 12 else mescomp - 1 end from pparam where codcoligada = 1) as char) + '/' + cast((select case when mescomp = 1 then anocomp - 1 else anocomp end from pparam where codcoligada = 1) as char)
AS datetime), 103)
and
CONVERT(varchar, CAST(
'20' + '/' + cast((select mescomp from pparam where codcoligada = 1) as char) + '/' + cast((select anocomp from pparam where codcoligada = 1) as char)
AS datetime), 103)
)

order by a.nome
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Sugestão:
Tira da cláusula WHERE essas linhas:

Selecionar tudo

and x.datahora between  CONVERT(varchar, CAST(
'21' + '/' + cast((select case when mescomp = 1 then 12 else mescomp - 1 end from pparam where codcoligada = 1) as char) + '/' + cast((select case when mescomp = 1 then anocomp - 1 else anocomp end from pparam where codcoligada = 1) as char)
AS datetime), 103)
and
CONVERT(varchar, CAST(
'20' + '/' + cast((select mescomp from pparam where codcoligada = 1) as char) + '/' + cast((select anocomp from pparam where codcoligada = 1) as char)
AS datetime), 103)
Eu colocaria essas duas linhas no SELECT sem o CONVERT e CAST, afim de ver o que ta sendo gerando...
Eu acho que está vindo alguma data errada ali.

Em resumo: descobre o que esses comandos tão gerando, ai vai saber porque está dando o erro.
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 24 visitantes