我的日期格式为201201,201202,201203等。
这是一个金融数据库,所以有一个13期;然而期间12& 13用于报告目的。
当最后两个字符为13时,如何用12替换它们?
我从
开始SELECT REPLACE(PERIOD, '13', '12')
FROM @b_s_summary
但是,当然这与2013年的年份混淆。
感谢所有建议。
答案 0 :(得分:2)
declare @Periods as Table ( Period VarChar(6) )
insert into @Periods ( Period ) values
( '201212' ), ( '201213' ), ( '201312' ), ( '201313' )
select Period, case
when Right( Period, 2 ) = '13' then Substring( Period, 1, 4 ) + '12'
else Period end as [AdjustedPeriod]
from @Period
答案 1 :(得分:1)
在这种情况下你可以使用Substring:
SELECT REPLACE(PERIOD, SUBSTRING(PERIOD, len(PERIOD) - 1, 2), '12')
FROM @b_s_summary WHERE PERIOD LIKE '%13'
这适合你,或者在过去或未来几年你需要一种更有活力的方法吗?
答案 2 :(得分:1)
同样,可以使用RIGHT()。
SELECT REPLACE(RIGHT(PERIOD,2),'13','12')
答案 3 :(得分:1)
试试这个:
select (case when right(period, 2) = '13' then left(period, 4) + '12' else period end)
相当标准的SQL,但某些数据库可能需要substr()
或substring()
而不是right()
和left()
。
答案 4 :(得分:-1)
SELECT LEFT(PERIOD,LEN(PERIOD)-2) 来自@b_s_summary