如果我有月份的名称,我怎么能在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)
结果:

现在,我怎样才能获得那个月的第一天和最后一天?更改查询.
如果您想要更通用,更简单的解决方案:
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)