Usuário com melhor resposta
Filtro com diferentes resultados

Pergunta
-
Boa tarde.
Estou com um problema estranho, pelo menos para mim.
É o seguinte, estou com uma consulta SQL que me retorna valores diferentes com filtros aparentemente iguais, conforme apresentado abaixo:
Instrução 1 - Filtro por Data
select * from tabela where data>='2018/04/01' and data<='2018/04/30'
Esta consulta me retorna 337 registros
Instrução 2 - Filtro Ano/Mes
select * from tabela where year(data)=2018 and month(data)=4
Esta consulta me retorna 352 registros
Já conferi a tabela de não encontrei nada que justificasse tal diferença, ainda mais que não há nenhuma associação que pudesse justificar o efeito. E só acontece neste mês. Demorei 3 dias para detectar estar anormalidade. A tabela em questão guarda registros de movimentação de caixa e comecei a detectar o problema na virada do mês, pois, quando o sistema ia apresentar o saldo inicial para o mês corrente, percebi que o Saldo era diferente do Saldo Final do mês anterior, exatamente pela falta/inclusão dos 15 registros. Na exibição dos Lançamentos do mês 4 feito pela primeira instrução, não aparecem os 15 registros e na captura do saldo Anterior, que não especifica o mês 4, os 15 registros são incluídos, modificando o saldo apresentado.
Alguém consegue me dar uma explicação sobre o fato? Fui claro com o problema?
Obrigado.
José Acílio
Respostas
-
Boa tarde,
Essa coluna Data armazena somente a data mesmo ou data e hora?
Pode ser que a parte das horas esteja provocando esse problema se essa coluna armazena data e hora. Nesse caso você poderia fazer um teste dessa forma:
select * from tabela where data>='2018/04/01' and data<'2018/05/01'
Espero que seja útil
Assinatura: http://www.imoveisemexposicao.com.br
Todas as Respostas
-
Boa tarde,
Essa coluna Data armazena somente a data mesmo ou data e hora?
Pode ser que a parte das horas esteja provocando esse problema se essa coluna armazena data e hora. Nesse caso você poderia fazer um teste dessa forma:
select * from tabela where data>='2018/04/01' and data<'2018/05/01'
Espero que seja útil
Assinatura: http://www.imoveisemexposicao.com.br
-
Boa tarde.
Esta coluna armazena Data e hora, mas olhando para as horas não tem nenhuma hora, nestes 15 registros que a meu ver pudesse fazer diferença. Os horários estão entre 15:00 e 21:30.
Fiz o teste aqui, e funcionou... Mas por que só ocorre com este mês e não com os outros meses? Essa é uma questão que me intriga.
Obrigado pela ajuda.
José Acílio
-
Nesse caso qualquer fração de segundo pode provocar essa diferença, seja qual mês for. Você pode por exemplo fazer um teste inserindo uma linha com a data igual a 31/03/2018 00:00:00:003 (ou dependendo do tipo de dados 31/03/2018 00:00:01 ou 31/03/2018 00:01).
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
-
-
-
O '2018/04/30' do seu filtro original é equivalente a '2018/04/30 00:00:00:000', por isso qualquer horário nesse dia provoca essa diferença.
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
-
-
Deleted
- Marcado como Resposta Filipe B CastroModerator quinta-feira, 17 de maio de 2018 18:08
-
Tentei usar a sua sugestão só que me apresentou erro:
Msg 243, Level 16, State 1, Line 2 Type date is not a defined system type.
Isso mesmo: na versão 2005 não estava disponível o tipo de dados date.
Nesse caso, a forma mais simples me parece ser a que o "gapimex" sugeriu, que também é sargable.
José Diz Belo Horizonte, MG - Brasil
Amigos,
O Datatype Date foi adicionado como novo tipo de dados a partir da versão 2008.
Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]
-