我在SQL Server中有一个字符串。我需要帮助,因为我是SQL的新手。
DECLARE @a varchar(50) = 201207我想如果最后两个字符小于7,那么年份应该减少到输出201107,否则应该是201307
发布于 2016-11-21 14:10:44
看看这篇文章,希望能对你有所帮助:
如果最后2个字符小于7,则输出为'201107‘,否则为'201307’。
declare  @a varchar(50)=201207
If substring(@a,5,2) <= 7
begin
Set @a = cast(SUBSTRING(@a,1,4) -1 as varchar(4)) + substring(@a,5,2)
end
else
begin
Set @a = cast(SUBSTRING(@a,1,4) +1 as varchar(4)) + substring(@a,5,2)
end
select @a发布于 2016-11-21 14:28:59
您可以执行以下操作:
DECLARE @Val VARCHAR(10) = '201206'
SELECT CASE WHEN  RIGHT(@Val, 2) * 1 <= 7  THEN CAST(LEFT(@Val, 4) * 1 - 1 AS VARCHAR(4))
            ELSE CAST(LEFT(@Val, 4) * 1 + 1 AS VARCHAR(4)) END + RIGHT(@Val, 2)结果:201106
发布于 2016-11-21 14:29:04
试试这个
DECLARE @a  VARCHAR(50)=201206,
        @dt DATE
SET @dt = Cast(@a + '01' AS DATE)
SELECT CASE
         WHEN Month(@dt) < 7 THEN LEFT(CONVERT(VARCHAR(10), Dateadd(yyyy, -1, @dt), 112), 6)
         ELSE LEFT(CONVERT(VARCHAR(10), Dateadd(yyyy, 1, @dt), 112), 6)
       END https://stackoverflow.com/questions/40713736
复制相似问题