我知道如何把这一年带出约会。但是,如何获得日期的年份,具体取决于该日期的周数?
示例:28-12-2015的第1周(ISO_WEEK)。在这种情况下,周数不属于2015年,而是2016年。另外:1-1-2016:周数53,因此1-1-2016不属于2016年,而是属于2015年。
是否有在SQL中轻松完成此功能的功能?
不,没有,但我自己创建了它。
CREATE FUNCTION [dbo].[ISO_YEAR](@date DATETIME)
returns SMALLINT
AS
BEGIN
DECLARE @ISO_YEAR SMALLINT = CASE
WHEN DATEPART(ISO_WEEK, @date)=1
AND MONTH(@date)=12 THEN YEAR(@date)+1
WHEN DATEPART(ISO_WEEK, @date)=53
AND MONTH(@date)=1 THEN YEAR(@date)-1
WHEN DATEPART(ISO_WEEK, @date)=52
AND Month(@date)=1 THEN YEAR(@date)-1
ELSE YEAR(@date)
END;
RETURN @ISO_YEAR;
END;
答案 0 :(得分:0)
根据您的问题,您似乎有两个不同的日期,而且您无法确定此日期属于哪一年。
我在这里有一个小例子:
DECLARE @Date datetime, @Date1 datetime
SET @Date = '2015-12-28'
SET @Date1 = '2016-01-01'
SELECT CASE WHEN datepart(Wk , @Date ) < datepart(Wk , @Date1 ) THEN (datepart(YEAR , @Date1 ) + 1) ELSE (datepart(YEAR , @Date1 )) END AS GETYEAR
输出: 2016
我强烈建议这不是了解这一年的正确方法。这里不是+/- 1逻辑。每年最多53周,你应该总是得到你的日期。