query que retornar um periodo entre duas datas dentro do sqlcomandTexe.

Preciso montar um  relatório dentro de um periodo entre duas datas.

Presciso retornas  todos os campos de uma tabela entre uma data e outro.

tipo de  25/06/2012    a    25/07/2012.

como não sei muito sobre sql estou tendo um pouco de dificuldade para montar a query detro  do   sqlCoomandText .

 

obs: só tenho um campo data na minha tabela.

 

 

 

agradeço a que puder me ajudar...obrigado.

Exibições: 3600

Respostas a este tópico

Ola PC. Brito,

Tente usar o operador between do Sql Ex.

var data1 = DateTime.Now;
var data2 = DateTime.Now.AddDays(4);


var command = New SqlCommand();
command.CommandText = "Select campo1, campo2 from tabela where campoData between @data1 and @data2";
command.Parameters.AddWithValue("@data1", data1);
command.Parameters.AddWithValue("@data2", data2);

Vc pode usar a cláusula between.

"Select * from [Tabela] where data between 01/01/2012 and 06/11/2012"

Vc também tem que verificar o formato da data.
Eu usei exemplo como dd/MM/yyyy
As vezes vem diferente.

Abraço.

Muito obrigado amigos..

vou fazer assim...sê der certo  os aviso..

valeu..... 

Olá Felipe..

na minha  tabela  só tem um campo  data, sendo  assim  não tenho  como  passar dois parametros     command.Parameters.AddWithValue("@data1", data1);
                     command.Parameters.AddWithValue("@data2", data2);

veja aqui como tentei faze..mas não deu certo.

 

  

public DataTable PesquisaIntervaloData(objetoGatos gastos)

        {

           

string sql = string.Empty;

        

sql ="SELECT  * FROM  gastos WHERE datagasto1 between @datagasto1 and  @datagasto1";

          

con =new SqlConnection(conexao);       

comand =new SqlCommand(sql, con);       

SqlDataAdapter ad = new SqlDataAdapter();          

DataTable dt = new DataTable();

 comand.Parameters.AddWithValue("@datagasto1", gastos.Data1);

comand.Parameters.AddWithValue("@datagasto1", gastos.Data2);

 ad.SelectCommand = comand;

 ad.Fill(dt);

con.Open();       

return dt;

       

        }

as 2 datas que você tem que passar são as data de inicio e fim que você quer filtrar naquele campo

vamos supor que eu tenho uma tabela com 10 registros:

Nome  | Idade | DataDeCadastro

Felipe  | 21     | 20/12/2011

Marcio | 25     | 10/10/2012

Waldyr | 31     | 05/05/2012

Ramon | 40     | 06/01/2012

Pedro  | 21     | 03/10/2012

João   | 18     | 28/02/2012

Natalia| 51     | 12/07/2012

Tainá  | 20     | 20/10/2012

Julia   | 61     | 15/04/2012

Ana    | 21     | 22/07/2012

agora vamos falar que eu quero pegar todos os usuários cadastrados entres os meses abril e outubro. A consulta ficaria assim:

Select * from Usuarios Where DataDeCadastro between '01/04/2012' and '01/09/2012'

os campos retornados seriam:

Julia    | 61     | 15/04/2012

Waldyr | 31     | 05/05/2012

Natalia | 51     | 12/07/2012

Ana     | 21     | 22/07/2012

No seu código o erro foi que você passou as duas datas no mesmo parâmetro. Tente faze assim:

public DataTable PesquisaIntervaloData(objetoGatos gastos)

        {

           

string sql = "SELECT  * FROM  gastos WHERE datagasto1 between @datagasto1 and  @datagasto2";

          

con =new SqlConnection(conexao);       

comand =new SqlCommand(sql, con);       

SqlDataAdapter ad = new SqlDataAdapter();          

DataTable dt = new DataTable();

 comand.Parameters.AddWithValue("@datagasto1", gastos.Data1);

comand.Parameters.AddWithValue("@datagasto2", gastos.Data2);

 ad.SelectCommand = comand;

 ad.Fill(dt);

con.Open();       

return dt;       

}

Perfeito  Felipe   ..deu certo.

me desculpe ter tomado um pouco do seu tempo, com uma explicação  tão bem detalhada,  como essa que vc fez..

muito obrigado....

valeu...abç  kara..

 

RSS

© 2019   Criado por Ramon Durães.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço