Ir para conteúdo
JhoniWillian

[Resolvido] Conversão de Data no Insert

Recommended Posts

Olá, bom dia pessoal.

 

Estou tendo dificuldades ao inserir informações via c# para o banco MySQL.

 

Como todos sabem, quando se cria uma tbl com campo DateTime no MySQL, ele vem em padrão americano 2017-10-04 'exemplo'

 

Meu problema é o seguinte.

 

Eu faço um select em um banco SQL Server e puxo essas informações para um DataGrid com os campos que necessito.

Após isso, o sistema vai levar esse datagrid e gravar as informações contidas nele para o banco MySQL fazendo o insert nesse trecho do código: 

 

 

 for (int i = 0; i < dvgOrdens.Rows.Count - 1; i++)
            {

                string ordem = dvgOrdens.Rows[i].Cells[1].Value.ToString(); //ordem
                string pedido = dvgOrdens.Rows[i].Cells[2].Value.ToString(); //pedido
                string operacao = dvgOrdens.Rows[i].Cells[3].Value.ToString(); //operacao
                string item = dvgOrdens.Rows[i].Cells[4].Value.ToString(); //item
                string data_limite = dvgOrdens.Rows[i].Cells[5].Value.ToString(); //Data Limite

                DateTime data = Convert.ToDateTime(data_limite);
                
                lblItem.Text = item;
                this.Refresh();


                //Inseri os valores na tabala do Andon
                string sql_insert = "INSERT INTO pixie_andon_nc (ordem, cod_item, operacao, pedido, inicio_prev, fim_prev) VALUES ('" + ordem + "', '" + item + "', '" + operacao + "', '" + pedido + "', '" + "STR_TO_DATE" + "("+ data +")" + "', '" + data + "')";

                MySqlCommand cmd = new MySqlCommand(sql_insert, mConn);
                cmd.ExecuteNonQuery();

            }

Ele está inserindo Ok as informações, porém, a Data Limite da Cells[5] ele está gravando como: 00/00/0000 00:00:00 e no meu datagrid quando puxo do SQL SErver a informação, ela está vindo como: 04/10/2017 (exemplo). 

 

A dúvida é: o campo do MYSQL é DateTime ou seja, Data e Hora. porém, eu só preciso da Data que vem do datagrid '04/10/2017' porque a hora vai ser editável pelo usuário depois, ou seja a hora ele pode manter 00:00:00, ficando assim: 04/10/2017 00:00:00, o que eu posso fazer para resolver esse problema?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, normalmente eu procuro passar as datas no formato YYYY-MM-DD, separados pelo "-", eu aprendí que esse é um formato quase que universal

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera, boa tarde

 

Consegui resolver mudando a conversão direto na hora de setar a celula para a variavel.


Segue solução prática para quem precisar

 

string data = Convert.ToDateTime(dvgOrdens.Rows.Cells[5].Value).ToString("yyy-MM-dd"); //Data Limite

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por EREGON
      Bom dia,
       
      estou a tentar fazer um exercício para, dado um ficheiro .txt na directoria do programa, terei de encontrar todas as palavras que são palíndromos. Tendo este código para ler as palavras do ficheiro .txt (letra a letra) para uma matrix.
       
      Estando as palavras armazenadas numa matrix, como faço essa validação?
       
      Obg,
       
      #include <stdio.h> #include <stdlib.h> int main(int argc, char const *argv[]) { FILE* inp; inp = fopen("palindromo.txt","r"); char arr[100][50]; int i = 0; while(1){ char r = (char)fgetc(inp); int k = 0; while(r!=',' && !feof(inp)){ //Le ate fim de ficheiro arr[i][k++] = r; //armazena no array r = (char)fgetc(inp); } arr[i][k]=0; //ultimo carater nulo //Alguma parte aqui, valida se a palavra e PALINDROMO. //COMO?? if(feof(inp)){ //valida EOF break; } i++; } int j; for(j = 0;j<=i;j++){ printf("%s\n",arr[j] ); //Imprime array } return 0; }  
    • Por Jefferson andre
      Ola, estou criando um contador de acessos diario mas nao funciona, a tabela tem o campo data no formato date e o campo contador int(10)
       
      A ideia eh verificar a data e se nao existir incluir na tabela, se existir adicionar ao contador
       
      Parece que o erro esta no formato da data, nem manualmente consigo incluir na tabela via localhost ou na hospedagem da google
       
      Agradeço qualquer ajuda
       
      <?php // fazendo uma conexão com o banco de dados include("conexao.php"); // grava a data atual em uma variavel date_default_timezone_set('America/Sao_Paulo'); $date = date('d-m-Y'); //$sql = "SELECT codigo FROM contador"; $resultado = $arquivo->query("SELECT data,contador FROM contador_diario WHERE data = '$date'"); if (mysqli_num_rows($resultado)== true){ // registro ja existe } else { // resultado nao encontrado entao inserir $sql = "INSERT INTO contador_diario ('data', 'contador') VALUES ('$date', '1')"; if ($arquivo->query($sql) == TRUE) { echo "Data cadastrada com sucesso"; } else { echo "Erro: " . $sql . "<br>" . $arquivo->error; } } // refaz a pesquisa para registrar o contador $resultado = $arquivo->query("SELECT data,contador FROM contador_diario WHERE data = '$date'"); // igualar a array a uma variavel $linha=mysqli_fetch_array($resultado); $cod_2 = $linha["contador"]+1; // lista a variavel //echo "<font face='Arial'><span class='style14'>$cod_2</span></font>"; $sql = "UPDATE contador_diario SET contador=$cod_2"; if ($arquivo->query($sql) === TRUE) { // echo "Alteração efetuada com sucesso"; } else { // echo "Erro alterando o contador de visitas diario" . mysqli_error($arquivo); } // fecha a conexao mysqli_close($arquivo); ?>  
    • Por Bruno Goedert Dalmolin
      Não consigo apresentar as palavras equivalentes conseguem me ajudar???
      O código é o seguinte: 
       
      #include <stdio.h>
      char equivale(int ddd){
          switch(ddd){
              case 61:
                  return "Brasilia";
                  break;
              case 71:
                  return "Salvador";
                  break;
              case 11:
                  return "Sao Palo";
                  break;
              case 21:
                  return "Rio de Janeiro";
                  break;
              case 32:
                  return "Juiz de Fora";
                  break;
              case 19:
                  return "Campinas";
                  break;
              case 27:
                  return "Vitoria";
                  break;
              case 31:
                  return "Belo Horizonte";
                  break;
          }
      }
      int main(){
          int ddd;
          scanf("%d",&ddd);
          equivale(ddd);
          printf("%d",equivale(ddd));
      }
    • Por AlexandreHenrique
      Olá 
      tenho uma função JS para mudar valor de atributos de uma imagem.
      A imagem é essa:
      <img src="capa.jpg"  data-desc="2018 - Aventura" alt="titulo do filme" onclick="teste(this,2);" id="video" />  A função:
      function teste(arg,p){ var pos = p; document.getElementById('video').src="novacapa.jpg"; // muda src document.getElementById('video').alt="Titulo do novo video"; // muda alt     document.getElementById('video').attr('data-desc', 'valor a atribuir'); // ??? } A função muda o "src" e "alt" mas não consigo mudar o valor do atributo 'data-desc", como faço isso?
      Essa é a linha em questão: 
      document.getElementById('video').attr('data-desc', 'valor a atribuir'); 
       
       
    • Por darkskull10
      Numa cidade as crianças costumam brincar com um jogo (de dois jogadores) onde:
      um jogador A define uma sequência de 10 letras usando: G, R e B (exemplo: G – G – G – R – B – R – B – B – B – R)
      um jogador B pode ler a sequência quantas vezes quiser
      o jogador B também pode dizer uma das letras e obter em quais posições a letra dada se encontra na sequência
      o jogador B também pode dar uma posição e saber qual letra ocupa a posição na sequência
      para finalizar, o jogador B deve dizer a sequência de letras, obtendo um ponto para cada acerto.
       
      Só consegui pensar nisso por enquanto.
       
      //identificar que letra ocupa esta posição na sequência:
      do{
      scanf(“%d”,&Posicao);
      Posicao=Posicao-1;}
      while ((Posicao<0)||(Posicao>9));
      printf(“%c”,Sequencia[Posicao]);
       
      //exibir sequencia
      for (Cont=0; Cont<=9; Cont++)
      printf(“%c”,Sequencia[Cont]);
       
      //exibir posições
      for (Cont=0; Cont<=9; Cont++)
      printf(“%d%c”,Cont+1,Sequencia[Cont]);
×

Informação importante

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