Principales respuestas
Seleccionar registro dependiendo de la hora de registro

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
- Editado Efrain Mejias Castillo sábado, 10 de octubre de 2015 16:23
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)
- Marcado como respuesta Efrain Mejias Castillo sábado, 10 de octubre de 2015 17:44
-
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
- Marcado como respuesta Efrain Mejias Castillo sábado, 10 de octubre de 2015 17:44
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)
- Marcado como respuesta Efrain Mejias Castillo sábado, 10 de octubre de 2015 17:44
-
¿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
- Editado Efrain Mejias Castillo sábado, 10 de octubre de 2015 17:05
-
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.
- Editado Willams Morales sábado, 10 de octubre de 2015 17:16
-
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
- Marcado como respuesta Efrain Mejias Castillo sábado, 10 de octubre de 2015 17:44