如何 select 两个去年在更实际的一年

How to select two last year in more actual year

我想知道我们如何才能 select 去年的两个在今年更多。

例如,如果我有一个 table 喜欢它:


id     date_enter      cost


1      19/09/2019    400$

1      20/09/2020    402$
     
1      19/04/2021   450$

1      19/09/2018    500$

1      05/03/2019    600$
    
1      19/09/2015    400$

那我要了:


id     date_enter      cost

1      19/09/2019    400$

1      20/09/2020    402$
    
1      19/04/2021   450$

1      05/03/2019    600$
 

我试着像这样使用 dateadd :

date_enter>=DATEADD(year,-2,GETDATE())

但是我去年才拿到2,现在想拿到2019、2020、2021

谢谢

您想获取从2019年1月1日开始的数据(即2019年、2020年和2021年的所有数据)。使用 DATE_FROM_PARTS 构造该日期。

select * 
from mytable
where date_enter >= date_from_parts(year(current_date) - 2, 1, 1);

如果我理解您的需求,您需要获取从今天开始 2 年前范围内的所有日期,包括第一年开始之后的所有日期(在 2019-01-01 之后的示例中)。

那我建议在减去2年之后用YEAR函数来比较

WHERE YEAR([Date]) >= YEAR(DATEADD(YEAR,-2,GETDATE()))

快速示例:

DECLARE @tblDates TABLE
(
    [Date] DATE
)

INSERT INTO @tblDates ([Date]) SELECT CONVERT(DATETIME2,'19/09/2019',103)
INSERT INTO @tblDates ([Date]) SELECT CONVERT(DATETIME2,'20/09/2020',103)
INSERT INTO @tblDates ([Date]) SELECT CONVERT(DATETIME2,'19/04/2021',103)
INSERT INTO @tblDates ([Date]) SELECT CONVERT(DATETIME2,'19/09/2018',103)
INSERT INTO @tblDates ([Date]) SELECT CONVERT(DATETIME2,'05/03/2019',103)
INSERT INTO @tblDates ([Date]) SELECT CONVERT(DATETIME2,'19/09/2015',103)

SELECT * FROM @tblDates
WHERE YEAR([Date]) >= YEAR(DATEADD(YEAR,-2,GETDATE()))