1

重複の可能性:
2 つの日付の間の月

私は結果をもたらす必要があります.2つの日付の間の月は何月ですか.

例えば。日付が

Declare @FrDate datetime,@ToDate datetime
Set @FrDate ='2010-05-31 17:38:58.577' 
Set @ToDate ='2010-09-01 17:38:58.577'

出力が必要

Result
MAY
JUN
JUL
AUG
SEP
4

3 に答える 3

2

これを試してください:

DECLARE @FrDate  DATETIME,
        @ToDate    DATETIME;

Set @FrDate ='2010-05-31 17:38:58.577' 
Set @ToDate ='2010-09-01 17:38:58.577'

;WITH MONTHS (date)
AS
(
    SELECT @FrDate
    UNION ALL
    SELECT DATEADD(month,1,date)
    from months
    where date<=@ToDate
)
SELECT Datename(month,date) AS MONTH FROM MONTHS

結果:

MONTH
-----------------
May
June
July
August
September

(5 row(s) affected)

結果で短い月名を取得するには、代わりに次の行を使用できます。

SELECT LEFT(CONVERT(VARCHAR,date,100),3) AS MONTH FROM MONTHS

大文字の月名を取得するにはUPPER、その関数を使用できます。

SELECT UPPER(LEFT(CONVERT(VARCHAR,date,100),3)) AS MONTH FROM MONTHS
于 2012-10-03T12:46:19.257 に答える
0

calendar tableを作成すると、次のように簡単に記述できます。

select distinct MonthName
from dbo.Calendar
where BaseDate between @StartDate and @EndDate
于 2012-10-03T13:00:16.840 に答える
0

別の方法

Declare @FrDate datetime,@ToDate datetime 
Set @FrDate ='2010-05-31 17:38:58.577'  
Set @ToDate ='2010-09-01 17:38:58.577' 

select 
    datename(month,dateadd(month,number-1,@FrDate)) as month_name
from 
    master..spt_values 
where 
    type='p'and number between 1 and datediff(month,@frdate,@todate)+1
于 2012-10-03T13:12:59.420 に答える