sql - sql如何获取当前年份的第一个和最后一个日期?

  显示原文与译文双语对照的内容
105 3

使用 SQL Server 2000,如何获得当前年份和最后一年的日期?

预期输出:

01/01/201231/12/2012

时间:原作者:0个回答

83 1
SELECT
 DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0) AS StartOfYear,
 DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, -1) AS EndOfYear

上述查询在December开始时为午夜提供日期日期值。这是大约 24小时的最后一刻。如果希望包含December年December可能发生的时间,那么应该与下一年的第一个版本进行比较,使用比较。或者者你可以以与当前年的最后几毫秒进行比较,但如果使用的是"DATETIME ( 如 DATETIME2 )",则仍然存在差异:

SELECT
 DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0) AS StartOfYear,
 DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, -1) AS LastDayOfYear,
 DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, 0) AS FirstOfNextYear,
 DATEADD(ms, -3, DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, 0)) AS LastTimeOfYear

技术详细信息

这是通过计算从 1900到 DATEDIFF(yy, 0, GETDATE())的年数,然后将它的添加到零= + 1的日期。可以以通过替换 GETDATE() 部分或者任意年代替换 DATEDIFF(...) 函数来更改任意日期。"

 SELECT
 DATEADD(yy, DATEDIFF(yy, 0, '20150301'), 0) AS StartOfYearForMarch2015,
 DATEADD(yy, 2015 - 1900, 0) AS StartOfYearFor2015
原作者:
...