Usuário com melhor resposta
Pesquisa por data

Pergunta
-
Oi boa tarde,
Eu tenho um select que faz uma busca ( pelo inner join) por data, o nome do método é : BuscaPorData, eu fiz ele assim:
select n.id,n.id_estagio,n.id_concorrente, n.id_produto,n.mensalidade,n.implatacao,n.data,n.id_prospect,n.id_resp,n.historico,
n.interecao,n.totalImplantacao, n.totalMensalidade, n.mes, n.data_atual, p.assunto nome_assunto, p.nomePropect nome_prospect,e.estagio nome_estagio,pr.produto nome_produto from Negociacao n
inner join Prospect p on n.id_prospect= p.id
inner join Estagio e on n.id_estagio= e.id
inner join Produto pr on n.id_produto= pr.id WHERE CONVERT(nvarchar(10), n.data 103) = ('%" + dataAtual + "%')");Eu tenho um campo dateTimePicker : "dtAltual" que passa uma, para mostrar as informações somente com a data que o usuário precisa e preencher em um gridview, entretanto ele não preenche o grid, acredito que o dateTimePicker passa tbm as horas, por isso vai tentar procurar pela data e hora que foi adicionado...
E como o usuário não vai saber as horas o sistema não funciona, ou seja, não busca as informações.
Seria por isso que não está preenchendo o Grid ? se for, como posso resolver ?
Se não for esse o motivo, como que posso resolver essa questão ?
Respostas
-
não entendi muito bem como posso usar o CAST...
Maria,
Desculpe, mas este CAST não vai funcionar no SQL Server 2005.
Formate seu datetimepicker como "yyyymmdd" e depois concatene com sua consulta:
string SuaData = dataAtual.Value.ToString("yyyyMMdd");
Como você utiliza o campo "n.data" como datetime, então você poderá utilizar assim:
... WHERE CONVERT(varchar(10),n.data, 120) = '" + dataAtual + "'";
Se ajudou na sua solução, não esqueça de marcar como resposta !
Abraços,
Durval RamosMicrosoft Partner | MTA | MCSA - SQL Server 2012---------------------------------- Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"- Marcado como Resposta Giovani Cr segunda-feira, 7 de abril de 2014 20:10
- Não Marcado como Resposta Giovani Cr segunda-feira, 7 de abril de 2014 20:10
- Marcado como Resposta Maria_15 terça-feira, 8 de abril de 2014 16:34
Todas as Respostas
-
Boa tarde,
Maria, estou com algumas dúvidas em relação a sua questão:
- qual é o tipo de dados da coluna n.data?
- qual o valor de dataAtual durante a execução desse código, e como esse valor é atribuido?
- qual versão do SQL Server você está utilizando?
Assinatura: http://www.imoveisemexposicao.com.br
-
Maria,
Antes de tudo, procure identificar o valor do seu objeto datetimepicker.
Depois altere sua consulta para buscar sua data, sem a necessidade de conversão como texto, porém realizando um CAST na data para buscar apenas o dia/mes/ano. Veja abaixo:
select n.id,n.id_estagio,n.id_concorrente, n.id_produto,n.mensalidade,
n.implatacao,n.data,n.id_prospect,n.id_resp,n.historico,
n.interecao, n.totalImplantacao, n.totalMensalidade, n.mes, n.data_atual,
p.assunto nome_assunto, p.nomePropect nome_prospect,e.estagio nome_estagio,
pr.produto nome_produto from Negociacao n
inner join Prospect p on n.id_prospect= p.id
inner join Estagio e on n.id_estagio= e.id
inner join Produto pr on n.id_produto= pr.id WHERE n.data = CAST(dataAtual AS date);
Se ajudou na sua solução, não esqueça de marcar como resposta !
Abraços,
Durval RamosMicrosoft Partner | MTA | MCSA - SQL Server 2012---------------------------------- Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil" -
-
-
não entendi muito bem como posso usar o CAST...
Maria,
Desculpe, mas este CAST não vai funcionar no SQL Server 2005.
Formate seu datetimepicker como "yyyymmdd" e depois concatene com sua consulta:
string SuaData = dataAtual.Value.ToString("yyyyMMdd");
Como você utiliza o campo "n.data" como datetime, então você poderá utilizar assim:
... WHERE CONVERT(varchar(10),n.data, 120) = '" + dataAtual + "'";
Se ajudou na sua solução, não esqueça de marcar como resposta !
Abraços,
Durval RamosMicrosoft Partner | MTA | MCSA - SQL Server 2012---------------------------------- Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"- Marcado como Resposta Giovani Cr segunda-feira, 7 de abril de 2014 20:10
- Não Marcado como Resposta Giovani Cr segunda-feira, 7 de abril de 2014 20:10
- Marcado como Resposta Maria_15 terça-feira, 8 de abril de 2014 16:34
-
Maria, caso a sua variável esteja retornando o formato 'dd/MM/yyyy', sugiro que você faça o select da seguinte forma:
select n.id,n.id_estagio,n.id_concorrente, n.id_produto,n.mensalidade,n.implatacao,n.data,n.id_prospect,n.id_resp,n.historico,
n.interecao,n.totalImplantacao, n.totalMensalidade, n.mes, n.data_atual, p.assunto nome_assunto, p.nomePropect nome_prospect,e.estagio nome_estagio,pr.produto nome_produto from Negociacao n
inner join Prospect p on n.id_prospect= p.id
inner join Estagio e on n.id_estagio= e.id
inner join Produto pr on n.id_produto= pr.id WHERE CONVERT(nvarchar(10), n.data, 120) =CONVERT(varchar(10),CONVERT(DATETIME,'" + dataAtual + "',103),120);- Editado alexandre_cavaleiro segunda-feira, 7 de abril de 2014 19:46 erro na escrita
- Sugerido como Resposta alexandre_cavaleiro terça-feira, 8 de abril de 2014 16:45
-
Maria, se não é gravado nenhum valor na parte das horas da coluna n.data (fica igual a 00:00:00) então experimente mais ou menos da seguinte forma:
"WHERE n.data = '" + dataAtual.Value.ToString("yyyyMMdd") + "'";
Ou se é gravado algum valor na parte das horas:
"WHERE n.data >= '" + dataAtual.Value.ToString("yyyyMMdd") + "' and n.data < '" + dataAtual.Value.AddDays(1).ToString("yyyyMMdd") + "'";
Espero que ajude.
Assinatura: http://www.imoveisemexposicao.com.br
-