2

正如标题所述,我正在尝试制作一个小函数来获取数据库中已经存在的日期值并将它们显示为 YYYY-MMM(例如:2013-Nov)。SQL 服务器。我尝试了 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 
4

2 回答 2

7

使用日期名称

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;  
于 2013-11-13T06:58:13.097 回答
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)

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

于 2013-11-13T07:15:31.067 回答