none
Mysql c# Timestamp não acha "Dias" RRS feed

  • Pergunta

  • Bom Gente o Visual Studio não consegue ler a coluna Dias e fazer uma procura com o like e dá erro! Eu creio que ele lê o código de uma vez e não acha o "Dias" criado com o TIMESTAMPDIFF(DAY, Data_de_hoje, Data_do_compromisso)
    Como eu poderia organizar o código acima para ele fazer umas pesquisa e mostrar o resultado sem dar erro?

    "SELECT ID, Nome_do_cliente, Data_do_compromisso, Data_de_hoje,
      Data_do_cadastro, Data_de_hoje, TIMESTAMPDIFF(DAY, Data_de_hoje, 
      Data_do_compromisso) AS Dias FROM agenda WHERE CONCAT(`Nome_do_cliente`, 
     `Data_do_compromisso`, `Data_de_hoje`, `Dias`)LIKE '%" + valorpesreb + "%'";

    Mensagem de erro:

    Erro na leitura de dados! Unknown Column 'Dias' in Where Clause

    quinta-feira, 14 de julho de 2016 12:58

Respostas

  • Esse é um problema do MYSQL e nao do C#.

    Voce nao pode usar labels de colunas com where. Em todos os bancos SQL o where é processado antes da seleçao de colunas, portanto a coluna DIAS ainda nao existe quando voce executa a query. O mesmo erro ocorreria se voce executasse essa query diretamente no MySQL.

    o correto é fazer assim:

    "SELECT ID, Nome_do_cliente, Data_do_compromisso, Data_de_hoje,
      Data_do_cadastro, Data_de_hoje, TIMESTAMPDIFF(DAY, Data_de_hoje, 
      Data_do_compromisso) AS Dias FROM agenda WHERE CONCAT(`Nome_do_cliente`, 
     `Data_do_compromisso`, `Data_de_hoje`, TIMESTAMPDIFF(DAY, `Data_de_hoje`, 
      `Data_do_compromisso`))LIKE '%" + valorpesreb + "%'";

    Nao posso validar a sintaxe , pois nao tenho ( e nem quero ter) o MySQL instalado.

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    quinta-feira, 14 de julho de 2016 14:00
    Moderador
  • É só capturar os dias novamente em seu concat, ele realmente não reconhece o campo Dias

    mas Data_de_hoje e Data_do_compromisso existem, tente assim, 

    "SELECT ID, Nome_do_cliente, Data_do_compromisso, Data_de_hoje,
      Data_do_cadastro, Data_de_hoje, TIMESTAMPDIFF(DAY, Data_de_hoje, 
      Data_do_compromisso) AS Dias FROM agenda WHERE CONCAT(`Nome_do_cliente`, 
     `Data_do_compromisso`, `Data_de_hoje`, Data_de_hoje, TIMESTAMPDIFF(DAY, Data_de_hoje, 
      Data_do_compromisso))LIKE '%" + valorpesreb + "%'";


    Se a resposta contribuiu com seu aprendizado por favor marque como Útil
    Se solucionou seu problema por favor marque como Resposta
    Atenção, se seu problema foi resolvido não deixe o post aberto

    Visite : www.codigoexpresso.com.br
    sexta-feira, 15 de julho de 2016 22:27

Todas as Respostas

  • Esse é um problema do MYSQL e nao do C#.

    Voce nao pode usar labels de colunas com where. Em todos os bancos SQL o where é processado antes da seleçao de colunas, portanto a coluna DIAS ainda nao existe quando voce executa a query. O mesmo erro ocorreria se voce executasse essa query diretamente no MySQL.

    o correto é fazer assim:

    "SELECT ID, Nome_do_cliente, Data_do_compromisso, Data_de_hoje,
      Data_do_cadastro, Data_de_hoje, TIMESTAMPDIFF(DAY, Data_de_hoje, 
      Data_do_compromisso) AS Dias FROM agenda WHERE CONCAT(`Nome_do_cliente`, 
     `Data_do_compromisso`, `Data_de_hoje`, TIMESTAMPDIFF(DAY, `Data_de_hoje`, 
      `Data_do_compromisso`))LIKE '%" + valorpesreb + "%'";

    Nao posso validar a sintaxe , pois nao tenho ( e nem quero ter) o MySQL instalado.

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    quinta-feira, 14 de julho de 2016 14:00
    Moderador
  • É só capturar os dias novamente em seu concat, ele realmente não reconhece o campo Dias

    mas Data_de_hoje e Data_do_compromisso existem, tente assim, 

    "SELECT ID, Nome_do_cliente, Data_do_compromisso, Data_de_hoje,
      Data_do_cadastro, Data_de_hoje, TIMESTAMPDIFF(DAY, Data_de_hoje, 
      Data_do_compromisso) AS Dias FROM agenda WHERE CONCAT(`Nome_do_cliente`, 
     `Data_do_compromisso`, `Data_de_hoje`, Data_de_hoje, TIMESTAMPDIFF(DAY, Data_de_hoje, 
      Data_do_compromisso))LIKE '%" + valorpesreb + "%'";


    Se a resposta contribuiu com seu aprendizado por favor marque como Útil
    Se solucionou seu problema por favor marque como Resposta
    Atenção, se seu problema foi resolvido não deixe o post aberto

    Visite : www.codigoexpresso.com.br
    sexta-feira, 15 de julho de 2016 22:27