0

我想知道我们如何在今年更多地选择去年的两个。

例如,如果我有一张这样的桌子:


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

谢谢

4

2 回答 2

3

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

select * 
from mytable
where date_enter >= date_from_parts(year(current_date) - 2, 1, 1);
于 2021-08-16T09:10:37.120 回答
0

如果我了解您的需求,您将需要获取从今天起 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()))
于 2021-08-16T09:47:55.080 回答