Usuário com melhor resposta
Select com Between usando DateTimePicker

Pergunta
-
Bom dia, sou iniciante em C# e não estou conseguindo fazer uma consulta básica.
Tenho uma tabela no bando de dados SQL Server com formato datetime, e estou tentando fazer a seguinte consulta no c#:
"SELECT U.COD_OS AS 'Cód', UU.DataIniOs 'Data OS' ,UU.ReqCompNum, UU.ReqCompStat, UU.PedCompNum, UU.PedValTot FROM USER_ITEM_REQ_MANUTENCAO U, USER_ITEM_REQ_MANUTENCAO_VAL UU WHERE U.ID = UU.ID AND UU.DataIniOs BETWEEN '%" + dtInicial.Text + "%' AND '%" + dtFinal.Text + "%'"
Quando vou executar o botão de pesquisa aparece o seguinte erro: Conversion failed when converting date and/or time from character string.
OBS: para a inserção dessa data na tabela estou convertendo corretamente e está inserindo normalmente.
Como faço para converter no Between, apenas para pesquisa?
Desde já grato!
Respostas
Todas as Respostas
-
-
tente isso
private void button2_Click(object sender, EventArgs e) { //converte o valor de data para string,ja no formado do banco dd/mm/yy hh:mm:ss string _inicial = this.dateTimePicker1.Value.ToShortDateString(); string _final = this.dateTimePicker2.Value.ToShortDateString(); //select com parametros @ string _select = "SELECT U.COD_OS AS 'Cód', UU.DataIniOs 'Data OS' ,UU.ReqCompNum, UU.ReqCompStat, UU.PedCompNum, UU.PedValTot FROM USER_ITEM_REQ_MANUTENCAO U, USER_ITEM_REQ_MANUTENCAO_VAL UU WHERE U.ID = UU.ID AND UU.DataIniOs BETWEEN @inicial AND @final"; using(SqlCommand _cmd = new SqlCommand(_select,new SqlConnection(""))) { //criei os parametros e atribui os valores à eles, //evite ficar concatenando string para fazer um select //isso evita com que seu sistema fique vulneravel à injeção de querys _cmd.Parameters.Add("@inicial", SqlDbType.DateTime).Value = _inicial; _cmd.Parameters.Add("@final", SqlDbType.DateTime).Value = _final; _cmd.ExecuteNonQuery(); } }
Microsoft Technology Associate (MTA)
- Editado Eduardo xUni terça-feira, 6 de outubro de 2015 14:17
-
Primeiro me mostra qual o formato esta retornando do DateTimerPicker.
Tente converter com:
DateTime data = DateTime.ParseExact(dateString, formato, CultureInfo);
A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
-
-
-
Sim, olhe como estou fazendo:
private void button1_Click(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection(@"SERVER=SERVER;DATABASE=Oficial115;UID=sa;PASSWORD=634zambow6pic08;");
SqlDataAdapter sda = new SqlDataAdapter("SELECT U.COD_OS AS 'Cód', Convert(VarChar(20), UU.DataIniOs) as 'Data OS', UU.ReqCompNum, UU.ReqCompStat, UU.PedCompNum, UU.PedValTot FROM USER_ITEM_REQ_MANUTENCAO U, USER_ITEM_REQ_MANUTENCAO_VAL UU WHERE U.ID = UU.ID AND UU.DataIniOs BETWEEN '%" + data1 + "%' AND '%" + data2 + "%'", conn);
DataTable dt = new DataTable();
sda.Fill(dt);
dgvRequisicao.DataSource = dt; -
-
Puxa vida cara era isso mesmo, nem estava me atentando para esse detalhe.
Valeu mesmo....Obrigado!