最亲爱的天才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
CTE
以YYYYMM
格式生成上个月的日期。使用SUBSTRING
对格式进行重新排列,以产生所需的输出。
如果您使用的是SQL Server 2012+,那么使用FORMAT
:可以更容易地获得所需的结果
SELECT FORMAT(DATEADD(m, -1, getdate()), 'MMyy') AS MMYY
您可以使用获得所需内容
TO_CHAR(add_months(sysdate,-1),'MMYY')
当然,如果需要,您可以用时间戳替换sysdate。