Как вернуть результаты в зависимости от дня выполнения запроса в 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))