2

月の名前がある場合、SQL でその月の最初と最後の日を取得するにはどうすればよいですか?

月の名前を返すには、次のクエリがあります。

DECLARE @StartDate  DATETIME,
        @EndDate    DATETIME;

SELECT   @StartDate = '20110501'        
        ,@EndDate   = '20110801';


SELECT  DATENAME(MONTH, DATEADD(MONTH, x.number, @StartDate)) AS MonthName
FROM    master.dbo.spt_values x
WHERE   x.type = 'P'        
AND     x.number <= DATEDIFF(MONTH, @StartDate, @EndDate)

結果:

結果

では、その月の最初と最後の日を取得するにはどうすればよいでしょうか。クエリを変更します。

4

5 に答える 5

6

より一般的で単純な解決策が必要な場合:

DECLARE @startdate AS DATETIME = GETDATE()
SELECT      
DATEADD(MONTH, DATEDIFF(MONTH, 0, @startdate) , 0)   as startMonth,
DATEADD(SECOND, -1, DATEADD(MONTH, 1,  DATEADD(MONTH, DATEDIFF(MONTH, 0, @startdate) , 0) ) ) as endMonth

結果は次のとおりです。

startMonth              endMonth
----------------------- -----------------------
2013-06-01 00:00:00.000 2013-06-30 23:59:59.000
于 2013-06-17T14:44:06.810 に答える