SQL SELECT以前的MMYY为varchar(4)

时间:2015-03-03 19:37:09

标签: tsql sql-server-2008-r2

最亲密的天才StackOverflow朋友,

我需要创建一个视图,它总是在WHERE子句中为“Period”提供数据,以varchar(4)格式查找上一个月和年( MMYY ) 。

示例:今天是2015年3月3日,所以我需要的是期间 0215

SELECT stuff
FROM   table
WHERE  period = '0215'

如何在视图中自动生成'0215',以便我总能看到上个月的数据?

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:2)

试试这个表达式:

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

答案 1 :(得分:1)

使用此:

;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

答案 2 :(得分:0)

你可以使用

获得你想要的东西

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

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