首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从SQL Server中的字符串减少1年

从SQL Server中的字符串减少1年
EN

Stack Overflow用户
提问于 2016-11-21 14:04:29
回答 5查看 62关注 0票数 0

我在SQL Server中有一个字符串。我需要帮助,因为我是SQL的新手。

代码语言:javascript
运行
复制
DECLARE @a varchar(50) = 201207

我想如果最后两个字符小于7,那么年份应该减少到输出201107,否则应该是201307

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2016-11-21 14:10:44

看看这篇文章,希望能对你有所帮助:

如果最后2个字符小于7,则输出为'201107‘,否则为'201307’。

代码语言:javascript
运行
复制
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
票数 0
EN

Stack Overflow用户

发布于 2016-11-21 14:28:59

您可以执行以下操作:

代码语言:javascript
运行
复制
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

票数 0
EN

Stack Overflow用户

发布于 2016-11-21 14:29:04

试试这个

代码语言:javascript
运行
复制
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 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40713736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档