SQL将上一个MMYY选择为varchar(4)



最亲爱的天才StackOverflow好友,

我需要创建一个视图,该视图将始终在WHERE子句中为"Period"提供数据,以varchar(4)格式查找上一个月和年(MMYY)。

示例:今天是2015年3月3日,所以我需要时段0215

SELECT stuff
FROM   table
WHERE  period = '0215'

如何在视图中自动生成"0215",以便始终看到上个月的数据?

如有任何协助,我们将不胜感激。

试试这个表达式:

SELECT STUFF(CONVERT(VARCHAR(10), DATEADD(MONTH, -1, GETDATE()), 101), 3, 6, '')

使用此:

;WITH PrevMonth AS (
   SELECT LEFT(REPLACE(CONVERT(date, DATEADD(m, -1, getdate())), '-', ''), 6) AS YYYYMM
)
SELECT SUBSTRING(YYYYMM, 5, 2) + SUBSTRING(YYYYMM, 3, 2) AS MMYY 
FROM PrevMonth  

CTEYYYYMM格式生成上个月的日期。使用SUBSTRING对格式进行重新排列,以产生所需的输出。

如果您使用的是SQL Server 2012+,那么使用FORMAT:可以更容易地获得所需的结果

SELECT FORMAT(DATEADD(m, -1, getdate()), 'MMyy') AS MMYY

您可以使用获得所需内容

TO_CHAR(add_months(sysdate,-1),'MMYY')

当然,如果需要,您可以用时间戳替换sysdate。

最新更新