在 SQL 中获取上一年的最后一天

Duk*_*578 -2 sql sql-server reporting-services

如何在 SQL 中获取上一年的最后日期,例如 20211231?

或者甚至获取列表中之前的最后日期

20211231
20221231
20191231
20181231
Run Code Online (Sandbox Code Playgroud)

我想在 SSRS 中使用该信息。

谢谢。

use*_*983 7

DATEFROMPARTS将是一种方法:

SELECT DATEFROMPARTS(YEAR(GETDATE())-1,12,31);
Run Code Online (Sandbox Code Playgroud)

另一种方法是在完全不受支持的旧版本上使用一些日期数学:

SELECT DATEADD(DAY,-1,DATEADD(YEAR,DATEDIFF(YEAR,0,GETDATE()),0));
Run Code Online (Sandbox Code Playgroud)

在未来的版本中,您还可以使用DATE_BUCKET

SELECT DATEADD(DAY, -1, DATE_BUCKET(YEAR,1,GETDATE()));
--or use a different origin
SELECT DATE_BUCKET(YEAR,1,GETDATE(),CONVERT(datetime,'19001231'));
Run Code Online (Sandbox Code Playgroud)

老实说,DATEFROMPARTS这可能是“最干净”且最容易理解的。