Действительно длинный рассказ короткий, у меня есть два поля datetime в таблице, которые я загружаю в переменные @DateFrom и @DateTo, и мне нужно " объясните, какой диапазон они охватывают в тексте для презентации на экране. Хотя поля являются datetime, компонент времени будет проигнорирован. Я также объявляю @Current как datetime для хранения результата getDate(), в случае, если мне нужно отключить время перед сравнением.T-SQL Ищете наиболее сжатый способ суммирования диапазона дат начала и окончания
Как такого рода вещи не очень редко, я надеюсь, что кто-то это сделал раньше.
Некоторые примеры (я буду использовать сегодняшнюю дату 6 апреля 2015 года для @Current):
If @DateFrom is April 6, 2015, and @DateTo is also April 6, 2015, return "Today"
If @DateFrom is April 5, 2015, and @DateTo is also April 5, 2015, return "Yesterday"
If @DateFrom is April 2, 2015, and @DateTo is April 6, 2015, return "Last 4 days"
If @DateFrom is March 29, 2015, and @DateTo is April 4, 2015, return "Last week"
(March 29 is Sunday, and April 4 is Saturday).
If @DateFrom is April 1, 2015, and @DateTo is April 30, 2015, return "This month"
If @DateFrom is March 1, 2015, and @DateTo is March 31, 2015, return "Last month"
If @DateFrom is March 28, 2015, and @DateTo is April 5, 2015,
return "From March 28, 2015 To April 5, 2015"
(because it doesn't fit any of the standard date ranges).
Я надеюсь, что кто-то опубликовал код для функции или хранимой процедуры, чтобы сделать это или очень похоже где-то , поэтому мне не нужно изобретать велосипед.
Почему '@ Current' просто' DATE', так как «компонент времени будет проигнорирован»? –
Хорошая точка, что делает окончательный код максимально чистым и легким. – Dan