Разница во времени, asp.net и SQL Server в дни, часы, минуты

StackOverflow https://stackoverflow.com/questions/1873519

Вопрос

Я работаю над приложением для отслеживания проблем с 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 Промежуток времени структура, чтобы получить эту функциональность.

Вы можете получить это вычитание Одна дата от другого, и это дает вам необходимые детали часов/минут/секунды.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top