none
Seleccionar registro dependiendo de la hora de registro RRS feed

  • Pregunta

  • hola

    Nesecito seleccionar el ID  de el  ultimo registro insertado , si la hora de registro es mayor o igual a 2 horas de la hora de consulta ...???

    la DB es SQLSERVER  , el campo de nombre FECHAENT  : 2015-10-10 10:24:23.500

    yo escribi esto  ,la idea principal  ..... pero me falta ???

    Private Function RetornaUltimaActualizacion() As Boolean Dim r As Boolean = False : Dim PARAMETRO1 As Date = Datetime.Now.Hour Dim SQL As String = "SELECT ID FROM SSOMENU2..INFOSALTOPOP

    WHERE ID = (SELECT MAX(ID) FROM SSOMENU2..INFOSALTOPOP) AND FECHAENT <= @PARAMETRO1" Dim Metodo As ClaseCompras = New ClaseCompras() Dim n As Integer = Metodo.Excalar(SQL, PARAMETRO1 , Nothing, Nothing, Nothing, Nothing, Nothing) If n > 0 Then : r = True : End If Return r End Function



    EFRAIN MEJIAS C VALENCIA - VENEZUELA


    sábado, 10 de octubre de 2015 16:22

Respuestas

  • Hola Efrain Mejias Castillo,

    Podrías usar la función DATEDIFF para evaluar la cantidad de tiempo entre dos rangos, pero, ¿qué sucede si no existe ningún registro que intersecte con la expresión? Para esos casos la consulta retorna un cero (0)

    SELECT ISNULL(MAX(ID), 0) FROM SSOMENU2..INFOSALTOPOP WHERE (DATEDIFF(HOUR, FECHAENT, GETDATE()) >= 120)

    sábado, 10 de octubre de 2015 16:58
  • gracias 

    Williams Morales

     1. Si existe un registro que no halla cumplido 2 horas , entonces se debe escribir uno nuevo, quiere decir que si retorna mayor a cero finaliza el proceso, si retorna 0 continua...Esto resuelve el dilema q se genero ..una confusion mia  

    la consulta quedo asi.... williams fijate que usaste HOUR   pero pusiste 120  

    SELECT ISNULL(MAX(ID), 0) FROM SSOMENU2..INFOSALTOPOP WHERE (DATEDIFF(HOUR, FECHAENT, GETDATE()) <= 2)


    EFRAIN MEJIAS C VALENCIA - VENEZUELA

    sábado, 10 de octubre de 2015 17:27

Todas las respuestas

  • Hola Efrain Mejias Castillo,

    Podrías usar la función DATEDIFF para evaluar la cantidad de tiempo entre dos rangos, pero, ¿qué sucede si no existe ningún registro que intersecte con la expresión? Para esos casos la consulta retorna un cero (0)

    SELECT ISNULL(MAX(ID), 0) FROM SSOMENU2..INFOSALTOPOP WHERE (DATEDIFF(HOUR, FECHAENT, GETDATE()) >= 120)

    sábado, 10 de octubre de 2015 16:58
  • ¿qué sucede si no existe ningún registro que intersecte con la expresión?  

    ESTA PERFECTO QUE DEVUELVA EL CERO...

    Pregunto yo 

    Q pasa si no existe ningun registro insertado en la tabla???

    en mi caso nesecito que devuelva un numero mayor a 0 para que la APP continue la primera vez que se ejecute ??? 


    EFRAIN MEJIAS C VALENCIA - VENEZUELA


    sábado, 10 de octubre de 2015 17:04
  • Hola Efrain Mejias Castillo,

    En cualquier caso: que no existan registros que intersecten con la condición o que la tabla no contenga registros, la consulta retornará Null, nosotros "enmascaramos" el Null a cero. El problema es que no puedes retornar un valor mayor a cero, ¿qué valor?  si por ejemplo pones 1, ¿como sabrás si es porque no existen registros o si es un ID válido?

    Lo que podrías primero hacer es validar por la existencia de registros, si existen registros entonces recién obtienes el valor máximo caso contrario seguirás el flujo que consideres oportuno.


    sábado, 10 de octubre de 2015 17:14
  • gracias 

    Williams Morales

     1. Si existe un registro que no halla cumplido 2 horas , entonces se debe escribir uno nuevo, quiere decir que si retorna mayor a cero finaliza el proceso, si retorna 0 continua...Esto resuelve el dilema q se genero ..una confusion mia  

    la consulta quedo asi.... williams fijate que usaste HOUR   pero pusiste 120  

    SELECT ISNULL(MAX(ID), 0) FROM SSOMENU2..INFOSALTOPOP WHERE (DATEDIFF(HOUR, FECHAENT, GETDATE()) <= 2)


    EFRAIN MEJIAS C VALENCIA - VENEZUELA

    sábado, 10 de octubre de 2015 17:27