Ir ao conteúdo
  • Cadastre-se

Javascript (Banco de Dados) Pegar menor valor de data de duas colunas e contar os dias!


Ir à solução Resolvido por Rui Guilherme,

Posts recomendados

Tenho duas colunas onde são registradas datas e horas, a coluna "DataDoIndiciamento" e "DataDoRecebimentoDaDenuncia". A partir dessas duas colunas eu preciso pegar a data com o menor tempo da coluna "DataDoIndiciamento" ate "DataDoRecebimentoDaDenuncia" e então jogar na tela o numero de dias de uma data para a outra.

 

apaga83.png.8d86efae61360e38928e56639c55fabf.png

 

No caso eu precisaria pegar da coluna "DataDoIndiciamento" o valor [2021-03-17 00:00:00.000] já que esse seria o menor tempo, tirar as horas e pegar apenas a data e então pegaria da coluna "DataDoRecebimentoDaDenuncia" da mesma linha o valor referente [24-03-2021 00:00:00.000], tiraria as horas e faria a contagem do número de dias da "DataDoIndiciamento" ate "DataDoRecebimentoDaDenuncia" que no caso daria 7 dias e então mostraria na tela esse resultado.

 

Eu já tenho uma public List da dados que uso para pegar as colunas dessa tabela já montada:

 

// --------- graficos com base na TR_CRIME_AUTOR ---------
        public List<CrimeAutorModel> GetAllCrimeAutorModel()
        {
            using (IDbConnection cn = ConnectionAnaliseCriminal)
            {
                try
                {
                    cn.Open();
                    string query = "SELECT COD_CRIME_AUTOR"                                  
                                   + ", DataDoIndiciamento"
                                   + ", DataDoRecebimentoDaDenuncia"                                   
                                   + " FROM dbo.TR_CRIME_AUTOR"
                                   + " WHERE DT_EXCLUSAO_LOGICA IS NULL";

                    return cn.Query<CrimeAutorModel>(query).ToList();
                }
                finally
                {
                    cn.Close();
                }
            }
        }

 

E também já tenho o Ajax montado na controller que pega da dados e uso para passar no JS:

 

// --------- graficos com base na TR_CRIME_AUTOR ----------
        [HttpGet] public JsonResult AjaxGetAllCrimeAutorModel() => Json(new DashboardDados().GetAllCrimeAutorModel());

 

E tenho a base da função:

 

async function shortestTimeDays() {

    let resultado, numberOfDays = 0;

    //chama o método ajax que trás todos os objetos
    try {
        const resposta = await fetch(`/Dashboard/AjaxGetAllCrimeAutorModel`);
        resultado = await resposta.json();
    } catch (e) {
        console.error("Erro ao realizar fetch");
        return console.error(e);
    }
  
}

 

Agora gostaria de saber como devo proceder no javascript para fazer o meu objetivo e poder jogar na tela o resultado.

 

apaga84.png.10a23a5db2bd7a47f463b593f5ce3c15.png

<div class="blocoProcessos" style="margin-bottom: 2em;">
  <div style="width: 100%;text-align:center;">
    <div>
      <span style="font-size: 20px;font-weight: 400;">Tempo minimo fase pré-processual</span>
    </div>
    <hr class="hrBlocoProcesso" style="margin-bottom: 5px;margin-top: 10px;" />
    <div style="display: flex;flex-direction: column;align-items: center;">
      <span>Tempo (em dias)</span>
      <span style="font-size: 25px;">*</span>
    </div>
  </div>
</div>

 

Grato Mizrain.

Link para o comentário
Compartilhar em outros sites

  • Solução

@Mizrain Phelipe Sá

 

Você precisa pegar essa String e usar o Date, porém, uma das suas datas são inválidas ([24-03-2021 00:00:00.000]) e isso pode causar uma issue no seu código, eu recomendo dar uma olhadinha aqui:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/Date

 

 // Retorna a diferenças de dias entre duas datas :D 
function CalcularDias(a, b) {
  return Math.floor((b.getTime() - a.getTime()) / 86400000);
}

async function shortestTimeDays() {

  try {
    //const resposta = await fetch(`/Dashboard/AjaxGetAllCrimeAutorModel`);
    
    //vou supor um resultado: (usei como exemplo os dados da print do banco de dados, porém coloquei outro exemplo para dar menos de 7 dias)
    const resultado = [
      {
        DataDoIndiciamento: '2021-03-17 00:00:00.000', 
        DataDoRecebimentoDaDenuncia: '2021-03-24 00:00:00.000'
    	},
      {
        DataDoIndiciamento: '2021-03-01 00:00:00.000', 
        DataDoRecebimentoDaDenuncia: '2021-03-28 00:00:00.000'
      },
      {
        DataDoIndiciamento: '2021-03-01 00:00:00.000', 
        DataDoRecebimentoDaDenuncia: '2021-03-03 00:00:00.000'
      }
    ]
    
    // Vou rodar os valores de dentro da array resultado e colocar em props.
    resultado.map((props) => {
      // vou extraiar as duas datas de dentro de props
      const { DataDoIndiciamento, DataDoRecebimentoDaDenuncia } = props
      
      //aqui eu faço a "conversão" de string para Date,
      const Indiciamento = new Date(DataDoIndiciamento)
      const Denuncia = new Date(DataDoRecebimentoDaDenuncia)
      
      //aqui eu pego a diferenças de dias..;
      const tempoPercorrido = CalcularDias(Indiciamento, Denuncia)
      
      if (tempoPercorrido >= 7) {
        // Aqui você pode exibir o toast, model, alert...
        console.log("Nice, se passou 7 dias, quantidade: " + tempoPercorrido)
      }
      else {
        // Aqui você pode exibir o toast, model, alert...
        console.log("Ainda não se passam 7 dias, quantidade: " + tempoPercorrido)
      }
      
    })
    
  } catch (e) {
    console.error("Erro ao realizar fetch");
    return console.error(e);
  }
}

Você pode testar e ver funcionando aqui: https://codepen.io/ruiguilherme/pen/RwKoOmK?editors=1011

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Mizrain Phelipe Sá Eu apenas simulei um resultado do fetch, na sua rota do (/Dashboard/AjaxGetAllCrimeAutorModel) deve retornar um objeto ou array com os dados, certo? Você só precisa organizar o json e salvar na const resultado e seguir o resto do código

 

Para puxar do banco de dados eu teria que fazer um Select no banco de dados, eu recomendo você pode usar o Sequelize e o NodeJS - pode optar pelo NanoExpressJS - ou se quiser algo mais profissional você pode usar o AdonisJS, e se quiser algo de alto desempenho pode usar o uWebSocketsJS.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!