是否有可能在sqlserver 2012的一栏中获得最近一个月,一年(即2017年3月)和上个月,即年(即2017年2月)。
|Month & Year|
---------------
| March2017 |
| February2017|
答案 0 :(得分:1)
我认为你想把它排在一排......也许就像:
SELECT
CONVERT(VARCHAR(16),DATENAME(month,GETDATE())) +
CONVERT(VARCHAR(16),DATEPART(YEAR,GETDATE())) +
' | ' +
CONVERT(VARCHAR(16),DATENAME(month,DATEADD(MONTH,-1,GETDATE()))) +
CONVERT(VARCHAR(16),DATEPART(YEAR,DATEADD(MONTH,-1,GETDATE())))
否则你可以这样做:
SELECT
CONVERT(VARCHAR(16),DATENAME(month,GETDATE())) + CONVERT(VARCHAR(16),DATEPART(YEAR,GETDATE()))
UNION ALL
SELECT
CONVERT(VARCHAR(16),DATENAME(month,DATEADD(MONTH,-1,GETDATE()))) + CONVERT(VARCHAR(16),DATEPART(YEAR,DATEADD(MONTH,-1,GETDATE())))
只需将GETDATE()
替换为您的列名称(如果要在表格中使用它)。
答案 1 :(得分:1)
在sql server 2012 +
中使用format()
select val='PrevMonth',dt=format(dateadd(month,datediff(month,0, getdate())-1,0),'MMMMMyyyy')
union all
select val='CurrMonth',dt=format(dateadd(month,datediff(month,0, getdate()) ,0),'MMMMMyyyy')
union all
select val='NextMonth',dt=format(dateadd(month,datediff(month,0, getdate())+1,0),'MMMMMyyyy')
但format()
可能会慢一点,请看一下:format()
is nice and all, but… - Aaron Bertand
rextester演示:http://rextester.com/IWCV22529
返回:
+-----------+--------------+
| val | dt |
+-----------+--------------+
| PrevMonth | February2017 |
| CurrMonth | March2017 |
| NextMonth | April2017 |
+-----------+--------------+
答案 2 :(得分:0)
是的,有几种方法可以做到这一点。一个例子是:
SELECT DATENAME(MONTH,DATEADD(MONTH,-1*number,GETDATE())) +
DATENAME(YEAR,DATEADD(MONTH,-1*number,GETDATE())) [Month & Year]
FROM master.dbo.spt_values
WHERE type = 'P'
AND number <= 1;
结果是:
╔══════════════╗
║ Month & Year ║
╠══════════════╣
║ March2017 ║
║ February2017 ║
╚══════════════╝