T-SQL如何使用两位数年份获得四位数年份值

时间:2016-11-25 17:18:22

标签: sql sql-server tsql

我有一个字符串值16 *******,我调用substring on来获取字符串文字的前两位数字

SUBSTRING(@CourtCaseNumber,1,2)

然后我需要一个函数,它将接受字符串参数(16)并返回给我四位数年份值2016.有些将是99,因此我需要一年的值1999,98将需要到1998年,15岁将需要2015年等。

所以看起来应该是这样的。我找不到能为我做这个的功能。

NEEDEDFUNCTION(SUBSTRING(@CourCaseNumber,1,2)  

2 个答案:

答案 0 :(得分:2)

您可以使用case

SELECT ((CASE WHEN LEFT(@CourtCaseNumber, 2) >= '50' THEN '19' ELSE '20' END) +
        LEFT(@CourtCaseNumber, 2)
       ) as yyyy

我将“'50'”作为区分几个世纪的合理界限。

编辑:

请勿使用此功能。只需创建一个计算列:

alter table t
    add yyyy as ((CASE WHEN LEFT(@CourtCaseNumber, 2) >= '50' THEN '19' ELSE '20' END) +
                 LEFT(@CourtCaseNumber, 2)
                ) ;

这样,任何使用该表的人都可以使用该值。

答案 1 :(得分:0)

所以基于@Gordon Linoff的答案功能如下:

create function dbo.your_name
(
    @yearYY nvarchar(2)
)
RETURNS nvarchar(4)
as
begin
    declare @yearYYYY nvarchar(4)
    set @yearYYYY = (SELECT ((CASE WHEN @yearYY >= 50 THEN '19' 
                        ELSE '20' END) + @yearYY
                    ) as yyyy)
    return @yearYYYY
end

试验:

select dbo.your_name ('70')