ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Ignorar registros com datas inválidas [Resolvido]

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
natanbh1
Colaborador
Colaborador


Registrado: Terça-Feira, 15 de Março de 2011
Mensagens: 3093
Localização: Belo Horizonte - MG

MensagemEnviada: Qua Fev 05, 2020 4:22 pm    Assunto: Ignorar registros com datas inválidas [Resolvido] Responder com Citação

Tenho a consulta SQL abaixo que funciona bem:

Código:
select sum(vallan) from asccc019 
where MONTH(convert(datetime, DATLAN, 11)) = MONTH(GETDATE())
and YEAR(convert(datetime, DATLAN, 11)) = YEAR(GETDATE())


Esse SQL soma o valor de todos os registros do mês corrente.
Uso a função CONVERT porque o campo DATLAN é string no formato yy/mm/dd.

O problema é quando há uma data inválida no campo DATLAN é retornado o erro:

Código:
the conversion of a varchar data type to a datetime data type resulted in an out-of-range value


Gostaria de ignorar estes registros com datas inválidas e mostrar a consulta. É possível?

Banco de dados: SQL Server 2008 R2
Componente: ADO
_________________
''A persistência é o caminho para o êxito.''
Charlie Chaplin


Editado pela última vez por natanbh1 em Qua Fev 05, 2020 4:42 pm, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
natanbh1
Colaborador
Colaborador


Registrado: Terça-Feira, 15 de Março de 2011
Mensagens: 3093
Localização: Belo Horizonte - MG

MensagemEnviada: Qua Fev 05, 2020 4:41 pm    Assunto: Responder com Citação

Consegui resolver trocando a função CONVERT por TRY_CONVERT que retorna nulo se a conversão for mal sucedida.

Código:
select sum(vallan) from asccc019
where MONTH(try_convert(datetime, DATLAN, 11)) = MONTH(GETDATE())
and YEAR(try_convert(datetime, DATLAN, 11)) = YEAR(GETDATE())

_________________
''A persistência é o caminho para o êxito.''
Charlie Chaplin
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB