功能将日期显示为YYYY-MMM

jac*_*nSD 2 sql sql-server scalar user-defined-functions date-formatting

正如标题所述,我正在尝试制作一个小函数来获取数据库中已有的日期值并将其显示为YYYY-MMM(例如:2013年11月).SQL Server.我试过DatePart,但它一次只需要一部分争论(不能做YYYY-MMM).有任何建议将其作为一项功能吗?

Create function fnYearMonth
(@InputDate date)
returns date
Begin
Return DatePart(YYYY-MMM, @inputdate)
End;

Select hiredate, dbo.fnYearMonth(hiredate) as ReviewDate
from employees
Order by ReviewDate 
Run Code Online (Sandbox Code Playgroud)

sla*_*voo 7

使用DATENAME

DECLARE @InputDate datetime
SELECT @InputDate = '2013-10-10 10:10:10'

DECLARE @output nvarchar(8);
SELECT @output = CAST(DatePart(YYYY, @InputDate) as nvarchar(4)) + '-' + CONVERT(nvarchar(3), datename(month, @InputDate))
SELECT @output;
Run Code Online (Sandbox Code Playgroud)

结果:

2013 - 10月

编辑:

Create function fnYearMonth
(@InputDate date)
returns nvarchar(8)
Begin
Return CAST(DatePart(YYYY, @InputDate) as nvarchar(4)) + '-' + CONVERT(nvarchar(3), datename(month, @InputDate))
End;  
Run Code Online (Sandbox Code Playgroud)