Разница во времени, asp.net и SQL Server в дни, часы, минуты
-
18-09-2019 - |
Вопрос
Я работаю над приложением для отслеживания проблем с ASP.NET и SQL Server 2005. При отслеживании проблем я храню крайний срок в качестве DateTime в базе данных, а также, если кто -то публикует сообщение на доске сообщений, дата публикации/время также получает Хранится в БД как DateTime.
Теперь мое требование состоит в том, чтобы показать крайний срок проблемы как «2 дня, оставшиеся», когда осталось всего 2 дня, точно так же, когда крайний срок уже закончился, он отображает на 2 дня за графиком. Я думаю, что это может быть достигнуто с помощью SQL Server Datediff (), но в случае сообщений, которые мне нужно показать, как опубликовано 2 часа 3 минуты назад ... или опубликовано 3 дня 18 часов назад или что -то подобное ... (( Мы можем устранить часы, если они были опубликованы даже за 1 день назад).
Пробовал Google, но не смог найти ничего полезного. Бы; Как всегда, цените вашу любезную помощь.
Заранее спасибо.
Решение
Используйте вариант по следующему запросу и при необходимости отрегулируйте. Для других RDBMS замените функции даты на соответствующие эквиваленты.
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
Другие советы
Вместо того, чтобы делать это в SQL, вы можете использовать .net Промежуток времени структура, чтобы получить эту функциональность.
Вы можете получить это вычитание Одна дата от другого, и это дает вам необходимые детали часов/минут/секунды.