查询一个月的第一天和最后一天

Poo*_*ook 1 sql sql-server

如果我有月份的名称,我怎么能在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)
Run Code Online (Sandbox Code Playgroud)

结果:

结果

现在,我怎样才能获得那个月的第一天和最后一天?更改查询.

Sir*_*ire 5

如果您想要更通用,更简单的解决方案:

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
Run Code Online (Sandbox Code Playgroud)

给出结果:

startMonth              endMonth
----------------------- -----------------------
2013-06-01 00:00:00.000 2013-06-30 23:59:59.000
Run Code Online (Sandbox Code Playgroud)