none
Converter String em DateTime banco DB2 RRS feed

  • Pergunta

  • BOm dia Galera, tenho essa consulta no banco, e preciso converter a String que vem do método em um formato de data yyyy/mm/dd... vou colocar a função a seguir, e a parte onde ele deve converter o valor quem vem como string para datetime

                

    public DataTable ListareDTLEC(string status, string numdtl, string dataenvio)
            {
                var sql = new StringBuilder();
                sql.Append("SELECT DISTINCT TSTDTLNOISO  AS eDTLEC, COUNT(D.DTLE_DOC_NO) AS QUANTIDADE_DOC");
                sql.Append(" FROM ANGRA3.TBISOME I, ANGRA3.TBDTLEC D");
                sql.Append(" WHERE 1 = 1 AND I.ISO_DRWG_NO = D.DTLE_DOC_NO");

                if (!string.IsNullOrWhiteSpace(numdtl))
                {
                    sql.Append(" AND TSTDTLNOISO = '" + numdtl + "'");
                }
                if (!string.IsNullOrWhiteSpace(status))
                {
                    sql.Append(" AND D.DTLE_STATUS = '" + status + "'");
                }
    //aqui eu preciso converter a data, por exemplo: 15/08/2013 em 2013/08/15

    //tenho que converter para DateTime na consulta, pois se eu utilizar DateTime na variável, perco a função de verificar se a //pessoa está passando a data ou não, isso só funciona com String. Então preciso receber a String 15/08/2013 e converter para 2013/08/15.

                if (!string.IsNullOrWhiteSpace(dataenvio))
                {
                    sql.Append(" D.DTLE_DAT_ENVIO = '" + dataenvio + "'");
                }

                sql.Append(" GROUP BY TSTDTLNOISO;");

                sql.Append(" ORDER BY eDTLEC;");

    alguém já passou por e isso, e poderia me dar uma ajuda???

    segunda-feira, 26 de agosto de 2013 12:50

Respostas

  • Obrigado pelas sugestões ae galera, mas consegui de outra forma, se alguém puder marcar como resposta pra mm ae, vou passar a solução a seguir:

    if (!string.IsNullOrWhiteSpace(dataenvio))
                {
                    string[] dat = txtDataEnvio.Text.Split(Convert.ToChar("/"));
                    DateTime nData = new DateTime(Convert.ToInt32(dat[2]), Convert.ToInt32(dat[1]), Convert.ToInt32(dat[0]));

                    dataenvio = dat[2] + "-" + dat[1] + "-" + dat[0];

                }

    Peguei o indice de cada parte, e depois montei no formato q eu queria. Quem precisar, aí está a solução. Desta maneira já passo a data no formato YYYY/MM/DD.

    • Marcado como Resposta Marcos Paulo P.M segunda-feira, 26 de agosto de 2013 18:03
    segunda-feira, 26 de agosto de 2013 18:03

Todas as Respostas

  • String.Format("{0:yyyy/MM/dd/}", dt);

    segunda-feira, 26 de agosto de 2013 13:12
  • String.Format("{0:yyyy/MM/dd/}", dt);

    e onde eu coloco este código João Marques, ele entra em que parte do código???
    segunda-feira, 26 de agosto de 2013 13:15
  • Este código realiza a conversão, sendo assim creio eu que antes do if que você comentou.

                

    dataenvio = String.Format("{0:yyyy/MM/dd/}", dataenvio);

    if (!string.IsNullOrWhiteSpace(dataenvio)) { sql.Append(" D.DTLE_DAT_ENVIO = '" + dataenvio + "'"); }



    segunda-feira, 26 de agosto de 2013 13:18
  • Este código realiza a conversão, sendo assim creio eu que antes do if que você comentou.

                

    dataenvio = String.Format("{0:yyyy/MM/dd/}", dataenvio);

    if (!string.IsNullOrWhiteSpace(dataenvio)) { sql.Append(" D.DTLE_DAT_ENVIO = '" + dataenvio + "'"); }



    Não está funcionando ainda não João, ele não converte o valor, continua como 15/08/213. Preciso q transforme em 2013/08/15. De qualquer forma, obrigado pela ajuda, se souber de outro método me avisa ae q eu tento.

    Abraço

    segunda-feira, 26 de agosto de 2013 13:41
  • Porque você não utiliza o Parameters do Command ele tem função predominante nisso
    segunda-feira, 26 de agosto de 2013 13:57
  • Obrigado pelas sugestões ae galera, mas consegui de outra forma, se alguém puder marcar como resposta pra mm ae, vou passar a solução a seguir:

    if (!string.IsNullOrWhiteSpace(dataenvio))
                {
                    string[] dat = txtDataEnvio.Text.Split(Convert.ToChar("/"));
                    DateTime nData = new DateTime(Convert.ToInt32(dat[2]), Convert.ToInt32(dat[1]), Convert.ToInt32(dat[0]));

                    dataenvio = dat[2] + "-" + dat[1] + "-" + dat[0];

                }

    Peguei o indice de cada parte, e depois montei no formato q eu queria. Quem precisar, aí está a solução. Desta maneira já passo a data no formato YYYY/MM/DD.

    • Marcado como Resposta Marcos Paulo P.M segunda-feira, 26 de agosto de 2013 18:03
    segunda-feira, 26 de agosto de 2013 18:03