【问题标题】:How to return results based on day of query run in SSMS如何根据在 SSMS 中运行的查询日期返回结果
【发布时间】:2019-01-17 00:19:35
【问题描述】:

我有一个问题,我似乎无法使用 SQL Server 解决问题。我有一个每月完成的预测金额。我需要一个查询来根据我运行查询的日期计算剩余预测。我正在尝试使用DATEPARTDATEADDDATEDIFF,但没有运气。任何人都有他们发现做类似事情的方法?

谢谢!

【问题讨论】:

  • 看看使用GETDATE
  • 您确实需要一些样本数据和想要的结果。有无数种方法可以计算和呈现类似的东西
  • 我添加了一个图形,其中包含数据的外观。假设我在 13 日运行它(突出显示) - 我只想返回当天到月底的预测总量。有的月份有 30 天,有的有 31 天(当然还有 28 天)。无论我在哪一天运行查询,我都试图找出可以进行该计算的方法。
  • 我假设在非闰年的 2 月 5 日,您希望将每月总数字乘以 5 / 28? (或者可能是 4 / 28,因为第 4 天还没有结束)。请确认/解释您要应用的规则,也许我们可以提供帮助。
  • 我不建议你硬编码任何东西,只是想深入了解你想要的东西。

标签: sql sql-server dateadd datepart


【解决方案1】:

为了至少让您开始“绕圈子”,假设您使用某种代码“语言”来访问 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

【讨论】:

    【解决方案2】:

    我相信我偶然发现了我正在寻找的答案......它有点笨拙,但实现了我所追求的 - 将我的日期从查询运行之日缩小到当月月底:@987654322 @

    【讨论】:

    猜你喜欢
    • 2021-05-21
    • 2012-02-08
    • 2022-01-13
    • 2013-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多