Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

JhoniWillian

[Resolvido] Problema ao converter para Datetime

Recommended Posts

Boa Tarde Galera,

 

Estou com um problema ao converter um campo varchar criado no SQL Server ao consultar via Query dentro do c#.

 

Se eu pego a query:

 

SELECT IndProd1 as OP, Lx_Item as Item, Lx_Operacao as Operacao, DataLimite, Lx_LinhaReceita as Cliente, OpProgramada As OpProgramada FROM Production 
                              WHERE Lx_Operacao = '00025' 
                              AND Lx_CodEtapa = 'P' 
                              AND Lx_LinhaReceita = 'CATERPILLAR' 
                              AND CONVERT(DATETIME,DataLimite) = '01/12/2017' 
                              AND CONVERT(DATETIME,DataLimite) = '30/01/2018' 
                              //+ "AND DataLimite = '30/01/2018' "
                              AND (DataLimite <> '---') 
                              AND DataLimite IS NOT NULL 
                              AND Inativo<>'E' 
                              AND PlanQty>(QtyPeca+QtySucata) 
                              ORDER BY startptrcol DESC,PlanDateEnd, Lx_Pedido, IndProd1, Indprod3

e jogo dentro do Banco SQL Server, ele me trás os resultados, nesse exemplo ai, esta me trazendo 5 linhas de resultados. Porém, quando faço via query dentro do c# para preencher um DataGrid, ele está dando esse erro: Additional information: The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.

 

OBS: Se em vez de colocar a sequencia de datas eu colocar somente o 'AND DataLimite = '30/01/2018' ele me trás o resultado, porém, somente do dia do filtro e precisava que fosse entre esse intervalo.

 

O que posso estar errando galera? a query dentro do c# ta assim:

 

string strSql = "SELECT IndProd1 as OP, Lx_Item as Item, Lx_Operacao as Operacao, DataLimite, Lx_LinhaReceita as Cliente, OpProgramada As OpProgramada FROM Production "
                             + "WHERE Lx_Operacao = '00025' "
                             + "AND Lx_CodEtapa = 'P' "
                             + "AND Lx_LinhaReceita = 'CATERPILLAR' "
                             + "AND CONVERT(DATETIME,DataLimite) = '29/01/2018' "
                             + "AND CONVERT(DATETIME,DataLimite) = '30/01/2018' "
                             //+ "AND DataLimite = '30/01/2018' "
                             + "AND (DataLimite <> '---') "
                             + "AND DataLimite IS NOT NULL "
                             + "AND Inativo<>'E' "
                             + "AND PlanQty>(QtyPeca+QtySucata) "
                             + "ORDER BY startptrcol DESC,PlanDateEnd, Lx_Pedido, IndProd1, Indprod3;";

            //cria o objeto command para executar a instruçao sql
            OleDbCommand cmd = new OleDbCommand(strSql, conn_mes);

            //define o tipo do comando 
            cmd.CommandType = CommandType.Text;

            //cria um dataadapter
            OleDbDataAdapter da = new OleDbDataAdapter(cmd);

            //cria um objeto datatable
            DataTable ops = new DataTable();

            //preenche o datatable via dataadapter
            da.Fill(ops);

            //atribui o datatable ao datagridview para exibir o resultado
            dvgOpProgramada.DataSource = ops;

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

enviei uma parte do código errado ai... 

 

o correto é:                              

+ "AND CONVERT(DATETIME,DataLimite) > '29/01/2018 00:00:00' "
 + "AND CONVERT(DATETIME,DataLimite) < '30/01/2018 23:59:59' "

 

porém, mesmo assim continua a mensagem: Additional information: The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem 2 problemas no seu código. 

 

O primeiro é que precisa definir qual formato esta trabalhando de data: https://docs.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql No seu caso o 103.

 

O segundo problema é que você converte sua coluna para DateTime e em seguida tenta comparar com uma string, você precisa converter os ambos. O certo seria:

 

+ "AND CONVERT(DATETIME, DataLimite, 103) > CONVERT(DATETIME, '29/01/2018 00:00:00' , 103) "
+ "AND CONVERT(DATETIME, DataLimite, 103) < CONVERT(DATETIME, '30/01/2018 23:59:59' , 103) "

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por mr22robot
      Ola caros amigos. 
      Estou com uma dúvida aqui que embora nao tenho achado ainda uma resposta, acredito que haja.
      Estou estudando a tão sonhada linguagem de programação asp.net core mvc. Linguagem essa que demorei 5 anos pra iniciar os estudos rsrs.
      Mas estou agarrado em uma situação. 
      Estou usando como base de dados nos meus estudos um banco Oracle. Que já tem algumas informações nele. Utilizei o SCAFFOLD para criar as classes e o contexto baseado no banco e tabelas existentes. 
      Porem agora na fase das consultas, estou perdido em como utilizar o IN que eu utilizo no oracle; no LINQ.
      Ex: 
      SELECT CODPROD,DESCRICAO FROM PRODUTO WHERE CODPROD IN(1,2,3,4,5,6) Como eu utilizo esse filtro com uma restrição de códigos de produtos? no caso o where codprod in(1,2,3,4,5,6) ?.
      Desde já obrigado pela ajuda.
    • Por Rafael Massula
      Boa noite pessoal, 
      Tenho o seguinte código em .Net que faz a comparação de uma senha que foi criptografada e salva no banco com a senha comum que o usuário conhece. O algoritmo que desenvolvi foi esse da image.png porem preciso converter essa verificação para JavaScript pela seguinte necessidade, será uma aplicação em electron e ela poderá funcionar offline então não terei como mandar a verificação para o servidor. Existe alguma possibilidade? Desde já agradeço. 

    • Por marceloDiegues
      Olá, amigos.
      Por favor,  me ajude com a seguintes perguntas.
       
      Qual a complexidade de um projeto desse?
      Qual o preçp de um projeto desse tipo?
       
      Quero contratar algum profissional para criar um site que tenha as seguintes funcionabilidades:
       
      1- Cadastro de usuário;
      2- Login e senha;
      3- O site seria muito parecido com o www.qconcursos.com, o usuário resolveria questões online.
      Contudo, haveria a possibilidade de criar salas tipo aqueles bate-papo da &nbsp;UOL.
      Então, o usuário criaria salas de estudos, em que , resolveria questões e conseguiria se comunicar por chat com usuários que estejam na mesma sala.
       
      Exemplo em anexo:
       
       
       
       

    • Por iveusername
      Preciso de ajuda com o serviço de url de suporte ao vivo. Quando recebo um url de Umuly.com no Postman, outras pessoas não devem ter permissão para bater papo usando esse url. Supondo que 10.000 pessoas tenham um bate-papo ao vivo, o serviço deve criar 10.000 novos urls. Qual é a razão por trás disso? Como o serviço gera novos urls para cada um? (Em linguagem .NET Core)
    • Por Caio Henrique Bottigelli
      Olá, estou desenvolvendo um sistema em asp.net Framework MVC, usando o banco de dados Postgresql. Quando 2 usuários diferentes usam o sistema acontece conflito de informações, por exemplo, no cadastro de clientes, preciso vincular uma pessoa a um determinado cliente, caso 2 usuários estiverem usando, e os 2 fizerem essa ação de vincular pessoas a um cliente, no 2º usuário vai aparecer a pessoa que o 1º usuário vinculou. É como se o sistema estivesse usando uma única Lista e os 2 usuários estivessem compartilhando essa lista.
      As variáveis de conexão não estão estáticas, toda vez que alguém entrar no sistema, vai ser criado uma nova instancia de conexão.
      Alguém sabe como resolver esse conflito de informação entre usuários?
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.