SQL SELECT 以前的 MMYY 为 varchar(4)

SQL SELECT Previous MMYY as varchar(4)

最亲爱的 Whosebug 天才朋友们,

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

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

SELECT stuff
FROM   table
WHERE  period = '0215'

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

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

你可以使用

得到你想要的

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

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

使用这个:

;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

试试这个表达式:

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