Ir para conteúdo
Raphael Zago

Comparar date SQL com DateTime.Now

Recommended Posts

Bom dia,

 

Estou tentando comparar 2 datas, uma delas esta na tabela, e a outra é uma DateTime.Now, que declarei no meu codigo.

 

alguem pode me sugerir algo ?

 

obrigado!!

 

 public ActionResult DevolveFicha(int? id)
        {
            GetBasicData();
        //    var data = (from x in db.EPI_REQ_PENDENTES where x.id_REQ == id select x.id_FICHA);
            var idf = (from x in db.EPI_REQ_PENDENTES where x.id_REQ == id select x.id_FICHA).FirstOrDefault();
            if (idf == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            FICHA_MESTRE fICHA_MESTRE = db.FICHA_MESTRE.Find(idf);
            if (fICHA_MESTRE == null)
            {
                return HttpNotFound();
            }

            DateTime hoje = DateTime.Now;
           

          // DateTime.DATA = DateTime.Parse(EPI_REQ_PENDENTES.)
           //DateTime emiss = DateTime.Parse(fICHA_MESTRE.dat_emissao.Value.ToString());



            return View(fICHA_MESTRE);
        }

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
36 minutos atrás, itlpps disse:

Se o campo da sua Model for DateTime, e o select trouxer ele carregado, é só comparar...

 

o Campo é DateTime sim! 

 

Eu tento comparar o campo com a minha variavel hoje, mas o if nao aceita...

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 hora atrás, itlpps disse:

Mostra como está fazendo o if, o código que postou está incompleto.

Mostra o erro também.

           

 

            EPI_REQ_PENDENTES ePI_REQ_PENDENTES = db.EPI_REQ_PENDENTES.Find(data);

            DateTime hoje = DateTime.Now;

            if (hoje <> ePI_REQ_PENDENTES) //aqui me retorna erro no operador
            {

            }

 

 

Ja tentei usar DateTime.Compare(campo1, campo2) mas tambem da erro...

 

Obrigado pela ajuda!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em C# diferente não é assim.. Isso ai é no SQL;

 

Tenta assim:

if (hoje != ePI_REQ_PENDENTES) 
{
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
18 minutos atrás, itlpps disse:

Em C# diferente não é assim.. Isso ai é no SQL;

 

Tenta assim:


if (hoje != ePI_REQ_PENDENTES) 
{
}

 

 

estou tentando por esse caminho :

 EPI_REQ_PENDENTES ePI_REQ_PENDENTES = db.EPI_REQ_PENDENTES.Find(id);
            DateTime hoje = DateTime.Now;
            DateTime emiss = DateTime.Parse(ePI_REQ_PENDENTES.DAT_MOVTO.ToString());
            if (hoje != emiss)
            {
                ePI_REQ_PENDENTES.dev_justificativa = "Devolvido"; 
                db.Entry(ePI_REQ_PENDENTES).State = EntityState.Modified;
                db.SaveChanges();
            }

 

o if nao aceita comparação por datas, pelomenos nao consegui...

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, aparentemente está tudo certo.

Você está comparando dois objetos do mesmo tipo...

Coloca um break point, vai debugando pra ver o que tem de errado;

Compartilhar este post


Link para o post
Compartilhar em outros sites
48 minutos atrás, itlpps disse:

Cara, aparentemente está tudo certo.

Você está comparando dois objetos do mesmo tipo...

Coloca um break point, vai debugando pra ver o que tem de errado;

 Consegui pelo caminho que postei acima Itlpps!

 

resumindo: nao posso comparar 2 campos diretamente no if, precisa "parsear" a data antes... 

 

Obrigado pela ajuda e atenção!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você estava comparando errado

 

No if você estava comparando o objeto(ePI_REQ_PENDENTES) com a data(hoje) 

 

Você tinha que comparar data dentro do objeto(ePI_REQ_PENDENTES.DAT_MOVTO) com a data(hoje), se comparar desta forma não precisa fazer o parse

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 asacap1000
      Salve Galera, estou quase finalizando um relatório porém travei em um campo.
      Este relatório consiste em subtrair hora de entrada e saída, trazer em dias horas e minutos de um período.
      Depois preciso calcular a média destes resultados.
      eu barrei na parte de dias não vem a informação correta.
       
      Segue select se alguem puder me dar uma força.
       
      SELECT io.id_in_out, IOP.DOCUMENT,IO.TIME_IN entrada, IO.TIME_RELEASE_PP saida, LPAD(TRUNC(((IO.TIME_RELEASE_PP - IO.TIME_IN) /24 )), 2, '0') || ':' || LPAD(TRUNC(((IO.TIME_RELEASE_PP - IO.TIME_IN) * 24 )), 2, '0') || ':' || LPAD(TRUNC(MOD((IO.TIME_RELEASE_PP - IO.TIME_IN) * 86400, 3600) / 60), 2, '0') || ':' || LPAD(TRUNC(MOD(MOD((IO.TIME_RELEASE_PP - IO.TIME_IN) * 86400, 3600), 60)), 2, '0') TEMPO FROM DESMEMBR DD, IN_OUT_POS IOP, IN_OUT IO, SPEDITEURE S, VEHICLE V, DRIVER D WHERE DD.TYP_PROCESS = 'DINACI' AND 'DI' = IOP.TYP_DOCUMENT AND DD.NR_DI = IOP.DOCUMENT AND IOP.ID_IN_OUT = IO.ID_IN_OUT AND IO.ART_IN_OUT IN ('CA', 'CC', 'CCE') AND IO.STAT <> '80' AND S.ID_SPEDITEUR = IO.ID_SPEDITEUR AND V.ID_VEHICLE = IO.ID_VEHICLE AND IO.TIME_IN >= TO_DATE('01/12/2018', 'dd/mm/yyyy') AND IO.TIME_IN <= TO_DATE('31/12/2018', 'dd/mm/yyyy') AND D.ID_DRIVER = IO.ID_DRIVER O resultado acima está vindo assim:
       
      1    378470    1211942181    14/12/2017 09:35:41    14/12/2017 13:32:31    00:03:56:50
      2    378470    1211942181    14/12/2017 09:35:41    14/12/2017 13:32:31    00:03:56:50
       
      Depois de acertar isso preciso realizar a média que a principio eu utilizaria o AVG mas dá erro.
       
      Agradeço quem puder me ajudar.
    • Por Nioshi
      Bom dia pessoal, tenho o seguinte problema, meu back-end com PHP precisa fazer um select no banco de dados SQL server, e uma das condições para pegar o dado é a data, até ai sem problemas, se eu utilizar:
      $dataInicio = $dataInicio->format('d/m/Y'); ele pega o dado sem problema algum do meu banco, porem quando foi tentado implementar em outro SQL Server, ele retorna o seguinte erro: 
      SQLSTATE [22007, 242]: [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]A conversão de um tipo de dados nvarchar em um tipo de dados datetime resultou em um valor fora do intervalo. ou seja, eu acho que o problema é a forma que o sql foi instalado(inglês,português), enfim, o que eu realmente preciso e se tem como eu saber o dateformat do SQL server, antes de setar a variável da data para consulta.
       
      no SQL do cliente se colocar o seguinte código:
      $dataInicio = $dataInicio->format('m/d/y'); ele também funciona sem problema algum, o que eu preciso saber é quando utilizar qual.
       
      Obrigado desde já.
    • Por silvagno
      Boa tarde,
       
      Tenho a seguinte input date time,  o que acontece que essa input chama sua id, porem não funciona com o meu script porque o script chama name e quando mudo para id não funciona o date time.
      É um script de replaceAll, ou seja ao selecionar a data e a hora no date time em teoria deveria substituir (NOME DO CLIENTE) pela data e hora.
       
      Bom, eu gostaria de saber se tem como modificar o script para chamar a id em vez do name ou ajustar a input para ser chamada por name.
      $('input[name="demo3"]').change(function(){ var nome = $(this).val(); var text = $('textarea[name="nome pessoal"]').val(); $('textarea[name="nome pessoal"]').val(text.replaceAll('(NOME DO CLIENTE)',nome)); }); <input id="demo3" type="text" size="25"><a href="javascript:NewCal('demo3','ddmmmyyyy',true,24)"><img src="images/cal.gif" width="16" height="16" border="0" alt="Pick a date"></a>  
    • Por TeixeiraRamos
      Por favor,
      MySQL com PHP7
      Estou digitando assim:
      echo "Data Ano: " . $row_registros['DATE(format([data_ano_liturgico],("d/m/Y")'] . "<br>"; Esperava esse resultado, por exemplo: 14/09/2018
       
      Estou tendo esse resultado:
       
       
×

Informação importante

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