【问题标题】:SQL Query + How to look back at a specific dateSQL 查询 + 如何回顾特定日期
【发布时间】:2021-09-19 08:16:35
【问题描述】:

我有一个查询,目前正在查看自购买之日起 28 天后的收据。

AND PAYMENT_DATE >= DATEADD(DD, -28, CONVERT(DATE, GETDATE()))

现在我应该回到前一年的 11 月 15 日,仍然使用PAYMENT_DATE

是否可以获得有关如何完成此更改的帮助?

谢谢。

【问题讨论】:

  • 为什么不直接硬编码'2020-11-15'
  • @GordonLinoff 因为这仅在运行查询 this 年时有效,但在明年再次运行时会失败。
  • 如果当前日期在 11 月 15 日到 12 月 31 日之间会发生什么?一年多以后还想回去吗?

标签: sql sql-server date tsql


【解决方案1】:

只需从今天的日期减去一年,然后使用 DATEFROMPARTS 建立一个新日期

AND PAYMENT_DATE >= DATEFROMPARTS(YEAR(GETDATE())-1, 11, 15);

【讨论】:

  • Year( GetDate() ) - 1 似乎比DATEPART(year, DATEADD(year, -1, GETDATE())) 简单得多。有什么理由避免它?
【解决方案2】:

使用以下代码

datediff(dd, PAYMENT_DATE, '20201115') = 0

另一种方法

AND CONVERT(DATETIME, FLOOR(CONVERT(FLOAT, PAYMENT_DATE))) = '15/11/2020'

【讨论】:

    猜你喜欢
    • 2021-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-26
    • 1970-01-01
    • 2018-07-11
    • 2018-01-31
    • 2023-03-30
    相关资源
    最近更新 更多