SELECT 上一年截至当前日期

SELECT previous year up to current date

我有一个 table,它有一个开始日期列,例如:

Start Date
2015/01/05
2015/02/08
2016/01/10
2017/02/10
etc...

我正在尝试将 WHERE 子句放入 select 基于当前 GETDATE().

一年前的所有记录

例如,如果今天是 2019 年 7 月并且我 运行 查询,我希望它 运行 并给我从 2018 年 7 月到 2019 年 6 月的开始日期. 如果我 运行 2019 年 8 月,我希望它显示从 2018 年 8 月到 2019 年 7 月的开始日期,依此类推。基本上到当前日期的前一个月。

目前我的 WHERE 子句中有这个:

WHERE start_date between DATEADD(YEAR,-1, GETDATE()) and GETDATE()

但我认为这似乎只比当前日期早一年。

我有更好的方法吗?

您可以在 SQL 服务器中使用 datefromparts()

where start_date >= datefromparts(year(getdate()) - 1, 1, 1) and
      start_date < datefromparts(year(getdate() - 1, month(getdate()), day(getdate())

我认为这是您的要求:

WHERE start_date BETWEEN
  DATEFROMPARTS(YEAR(GETDATE()) - 1, MONTH(GETDATE()), 1) 
  AND
  DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), -1)

与:

DATEFROMPARTS(YEAR(GETDATE()) - 1, MONTH(GETDATE()), 1)

你得到去年当月的第一天。
有:

DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), -1)

你得到上个月的最后一天。
demo.