【问题标题】:Dynamic Date Reporting动态日期报告
【发布时间】:2020-10-05 15:29:01
【问题描述】:

我正在尝试创建一个查询,该查询为当前年份 (CY) 和上一年 (PY) 提取相同的日期期间,两者都是从年初到今天的日期。我希望它们充满活力,所以明年我不必进去更新任何东西。

对于 CY,我有:

Where CreatedOn between DATEFROMPARTS(YEAR(GETDATE(),1,1) and GETDATE()

对于 PY,我遇到了问题。我尝试使用 DATEADD 从上面减去一年,但这并不奏效。

感谢您提供的任何帮助。

【问题讨论】:

  • 请提供样本数据和期望的结果。仅显示 where 子句不足以供我们使用。
  • “遇到问题”和“不太好用”都不是问题描述。到底发生了什么,为什么错了?
  • 缺少右括号 DATEFROMPARTS(YEAR(GETDATE()),1,1) 和 GETDATE()
  • 我努力了很多,@JohnCappelletti! ;)
  • “不太有效”和“不喜欢”是什么意思?你是怎么查询的?请发布您尝试过的代码、示例数据、所需结果和实际错误消息(“不喜欢”很难诊断)。另外,您想在一天中的任何时间得到相同的答案吗?如果登录是在去年 10 月 5 日晚上 11 点创建的,那么如果您今天晚上 10 点查询,结果是否会出现?

标签: sql sql-server date


【解决方案1】:

我想你正在寻找这样的东西。

/* current year */
Where CreatedOn between datefromparts(year(getdate()),1,1) and getdate()

/* prior year */
Where CreatedOn between datefromparts(year(dateadd(year, -1, getdate())), 1, 1) and
                        datefromparts(year(dateadd(year, -1, getdate())), 12, 31)

【讨论】:

    【解决方案2】:
    SELECT
       DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()), 0) AS StartOfYear,
       DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()) + 1, -1) AS EndOfYear
    

    这应该可以工作

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多