如何在SQL中使用while循环基于日期迭代字符串文字

时间:2018-07-27 13:49:01

标签: sql sql-server tsql

我有一张要查询的表,用于提供进程列表。这些过程的命名约定根据我们所处的当前月份和年份而变化。因此,对于7月份,它的名称将为“ 07”,名称为“ 18”,依此类推。 这是一个测试查询

SELECT SUBSTRING(process_ID , 6, 2) as Procnumber,[process_ID]
FROM [Hana].[dbo].[processActivityEvent] v
WHERE process_ID like 'AB18-07_shield%' 

我使用了一个子字符串来获取给我的月份:

结果

+------------+----------------------+
| Procnumber |      Process_ID      |
+------------+----------------------+
|         07 | AB18-07_shield123456 |
+------------+----------------------+

每当我们进入新的月份(即8月)时,我都希望迭代该数字(月份)。我想要一个while循环或任何一个将下一个数字加1或替换当前数字的函数,这样无论何时我们进入新的月份或年份,我都不必将其硬编码到查询中或修改查询。我想使这个过程自动化。 请帮忙。

2 个答案:

答案 0 :(得分:1)

WHERE process_ID like 'AB18-'+RIGHT('0' + RTRIM(MONTH(GETDATE())), 2)+'_shield%' 

一年中您也可以做类似的事情

答案 1 :(得分:1)

添加了Year计算后,将会是

  

哪里有process_ID,例如“ AB” + RIGHT(RTRIM(YEAR(GETDATE())),2)   +'-'+ RIGHT('0'+ RTRIM(MONTH(GETDATE())),2)+'_ shield%'