2009-12-09 1 views
0

Я работаю над приложением для отслеживания проблем с asp.net и sql server 2005. При отслеживании проблем я сохраняю крайний срок как дату и время в базе данных, а также если кто-то отправляет сообщение на доске объявлений, дата и время проводки также сохраняются в db как дата и время.Asp.Net и Sql Server Разница во времени, часах, минутах

Теперь мое требование состоит в том, чтобы показать крайний срок выпуска как «2 дня осталось», когда осталось всего 2 дня, точно так же, как только истечет крайний срок, он отображается на 2 дня позади графика. Это, я думаю, может быть достигнуто с помощью sql-сервера dateiff(), но в случае сообщений, которые мне нужно показать, как опубликовано 2 часа 3 минуты назад .... или отправлено на 3 дня 18 часов назад или что-то подобное ... (мы можем исключить часы, если они были отправлены даже за 1 день до этого).

Пробовал Google, но не нашел ничего полезного. Бы; оцените свою любезную помощь, как всегда.

Заранее спасибо.

ответ

0

Используйте вариант по следующему запросу и при необходимости отрегулируйте его. Для других СУБД заменить функции даты соответствующими эквивалентами.

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 
+0

еще не проверял это! но выглядит потрясающе :) большое спасибо за ваши добрые усилия. – Kunal

3

Вместо этого в SQL вы можете использовать структуру .NET TimeSpan для получения этой функции.

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