2

タイトルが示すように、データベースに既にある日付の値を取り、それらを YYYY-MMM (例: 2013-11 月) として表示する小さな関数を作成しようとしています。SQLサーバー。DatePart を試してみましたが、一度に 1 つの引数しか必要としません (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

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;  
于 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 に答える