SQL SELECT 以前的 MMYY 为 varchar(4)
SQL SELECT Previous MMYY as varchar(4)
最亲爱的 Whosebug 天才朋友们,
我需要创建一个视图,该视图将始终在 "Period" 的 WHERE 子句中为我提供数据,以查找前一个月和前一年 (MMYY ) 为 varchar(4) 格式。
示例:今天是 2015 年 3 月 3 日,所以我需要 Period 为 0215。
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
CTE
以 YYYYMM
格式生成上个月的日期。使用 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, '')
最亲爱的 Whosebug 天才朋友们,
我需要创建一个视图,该视图将始终在 "Period" 的 WHERE 子句中为我提供数据,以查找前一个月和前一年 (MMYY ) 为 varchar(4) 格式。
示例:今天是 2015 年 3 月 3 日,所以我需要 Period 为 0215。
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
CTE
以 YYYYMM
格式生成上个月的日期。使用 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, '')