【问题标题】:Getting all data from last month获取上个月的所有数据
【发布时间】:2021-10-10 06:35:33
【问题描述】:

我正在构建一个 SQL 视图,它向我显示了上个月信息所在的表 T 的所有条目。我想要它,这样如果我在 8 月的任何时间运行视图,它将显示 7 月的所有条目,而不仅仅是一个月前我对当前代码所做的事情。

请看这个:

where cast(t.Ticket_OpenDate as date) >= cast(dateadd(month, -1, getdate()) as date)

我期待收到某人的来信。

【问题讨论】:

标签: sql sql-server date tsql


【解决方案1】:

在另一个答案中使用DATEDIFF 效果不佳,因为它不能使用索引(它不是sarge-able)。

使用日期间隔(开始和结束)要好得多,在这种情况下,我们需要一个半开间隔(不包括结束日期):

WHERE t.Ticket_OpenDate >= DATEFROMPARTS(YEAR(GETDATE()), MONTH(GETDATE()) - 1, 1)
  AND t.Ticket_OpenDate <  DATEFROMPARTS(YEAR(GETDATE()), MONTH(GETDATE())    , 1)

【讨论】:

    【解决方案2】:

    您应该能够为此使用DATEDIFF() 函数:

    WHERE DATEDIFF(month, CAST(t.Ticket_OpenDate as date), GETDATE()) = 1
    

    有关示例,请参阅 db<>fiddle

    【讨论】:

    • 完美!谢谢。
    猜你喜欢
    • 1970-01-01
    • 2017-03-30
    • 2011-01-06
    • 1970-01-01
    • 2022-01-13
    • 2023-02-03
    • 1970-01-01
    • 1970-01-01
    • 2011-07-21
    相关资源
    最近更新 更多