簡體   English   中英

T-SQL如何使用兩位數年份部分獲取四位數年份值

[英]T-SQL how to get four digit year value using two digit year part

我有一個字符串值16 *******,我調用substring來獲取字符串文字的前兩位

SUBSTRING(@CourtCaseNumber,1,2)

然后,我需要一個函數,該函數將使用字符串參數(16),並向我返回四位數的年份值2016。其中一些將是99,因此,我需要的年份值是1999,98需要是1998, 15必須是2015等。

因此它應該看起來像這樣。 我找不到能為我做到這一點的功能。

NEEDEDFUNCTION(SUBSTRING(@CourCaseNumber,1,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)
                ) ;

這樣,使用表的任何人都可以使用該值。

因此基於@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')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM