Как вернуть результаты в зависимости от дня выполнения запроса в SSMS

У меня есть проблема, которую я не могу обернуть мне голову с помощью SQL Server. У меня есть прогноз суммы, которая делается на ежемесячном уровне. Мне нужен запрос, который рассчитал бы оставшийся прогноз на основе дня, когда я выполнил запрос. Я пытался с DATEPART, DATEADD & DATEDIFF но не повезло. У кого-нибудь есть способ найти что-то подобное?

Спасибо!

2 ответа

По крайней мере, чтобы вы начали "сворачивать голову", вот подход, который можно использовать, предполагая, что вы используете некоторый код "языка" для доступа к базе данных SQL Server. Вот некоторый простой для понимания классический ASP-код для вычисления переменной FractionToUse, который затем может быть использован для умножения в операторе SQL:

FirstDayOfCurMonthDate = DateSerial(Year(Date()), Month(Date()), 1)
CurrentDate = Date()
FinalDayOfCurMonthDate = DateSerial(Year(Date()), Month(Date()) + 1, 1 - 1)

DaysInCurMonthRemaining = DateDiff("D", CurrentDate, FinalDayOfCurMonthDate) + 1
DaysInCurMonthTotal = DateDiff("D", FirstDayOfCurMonthDate, FinalDayOfCurMonthDate) + 1

FractionToUse = DaysInCurMonthRemaining / DaysInCurMonthTotal

Я полагаю, что наткнулся на ответ, который искал... он немного неуклюжий, но достигает того, к чему я стремился - сузить свои даты со дня выполнения запроса до конца этого месяца: BETWEEN CURRENT_TIMESTAMP AND DATEADD(s, -1, DATEADD(m, DATEDIFF(m, 0, CURRENT_TIMESTAMP)+1, 0))

Другие вопросы по тегам