ASP.NET y la diferencia de tiempo del servidor SQL en días, horas, minutos
-
18-09-2019 - |
Pregunta
Estoy trabajando en una aplicación de seguimiento de problemas con ASP.NET y SQL Server 2005. Mientras rastreo los problemas, estoy almacenando la fecha límite como fecha de fecha en la base de datos y también si alguien publica un mensaje en el tablero de mensajes, la fecha/hora de publicación también está obteniendo Almacenado en el DB como DateTime.
Ahora mi requisito es mostrar la fecha límite del problema como "2 días restantes" cuando solo quedan 2 días, así cuando la fecha límite ya ha superado su SUD 2 días atrás. Creo que esto podría lograrse con SQL Server Datediff (), pero en el caso de los mensajes que necesito mostrar como publicado por hace 2 horas hace 3 minutos ... o publicado por 3 días hace 18 horas o algo similar ... (( Podemos eliminar las horas si se publicó incluso 1 día antes).
Probé Google pero no pude encontrar nada útil. Haría; Aprecia tu amable ayuda como siempre.
Gracias por adelantado.
Solución
Use una variación de la siguiente consulta y ajuste según sea necesario. Para otros RDBMS, reemplace las funciones de fecha con equivalentes apropiados.
SELECT CASE
WHEN DateValue-GETDATE() >= 1 THEN CAST(DATEPART(dy, DateValue-GETDATE()) AS varchar) + ' day(s) remaining'
WHEN DateValue-GETDATE() >= 0 THEN CAST(DATEPART(hh, DateValue-GETDATE()) AS varchar) + ' hour(s) remaining'
/*Note, it's convenient to switch around for negatives*/
WHEN GETDATE()-DateValue <= '00:59' THEN CAST(DATEPART(mi, GETDATE()-DateValue) AS varchar) + ' minutes(s) overdue'
WHEN GETDATE()-DateValue <= 1 THEN CAST(DATEPART(hh, GETDATE()-DateValue) AS varchar) + ' hours(s) overdue'
ELSE
CONVERT(varchar, DateValue-GETDATE(), 121)
END AS Time_Scale
Otros consejos
En lugar de hacer esto en SQL, puede usar el .net Espacio de tiempo estructura para obtener esta funcionalidad.
Puedes conseguirlo por reto Una fecha de otra, y le da los detalles de horas/minutos/segundos que necesita.