功能将日期显示为YYYY-MMM

时间:2013-11-13 06:47:55

标签: sql sql-server user-defined-functions date-formatting scalar

正如标题所述,我正在尝试创建一个小函数来获取数据库中已有的日期值并将其显示为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 

2 个答案:

答案 0 :(得分:6)

使用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;

结果:

  

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;  

答案 1 :(得分:1)

使用DATENAME功能:

Create function fnYearMonth
(@InputDate date)
returns VARCHAR(16)
Begin
Return CAST(YEAR(@InputDate) AS CHAR(4)) + ' '+ DATENAME ( month , @InputDate )
End;

或者

 CAST(YEAR(@InputDate) AS CHAR(4)) + ' '+ LEFT(DATENAME ( MONTH , @InputDate ),3)

如果您不需要本月的全名。