SQL Server查找月 - 月范围的结束日期

问题描述:

在我的SQL Server过程中,我有一个输入参数,如created_dateSQL Server查找月 - 月范围的结束日期

根据创建的日期,我必须找出该月的第一个和最后一个日期。

For example, 

如果CREATED_DATE是12-08-2016

start_date should be '01-08-2016' 
end_date should be '31-08-2016' 

如果CREATED_DATE是15-06-2016

start_date should be '01-06-2016 00:00:00' 
end_date should be '30-06-2016 23:59:59' 
+0

使用谷歌:https://sqlandme.com/2011/05/ 16 /如何获取第一个和最后一个月的tsql/ –

+0

通过以下URL获得答案,http://*.com/questions/16277504/what-is-the-equivalent -of-预言,末日的功能,在-SQL服务器2008 – Srinivasan

select 
DATEADD(Month, DATEDIFF(Month, 0, GETDATE()), 0) as monthfirstdate, 
CAST(EOMONTH(GETDATE()) as DATETIME) as monthlastdate 

EOMONTH从SQL Server 2012

工作由于您的输入在DD-MM-YYYY格式,所以需要先转换为MM-DD-YYYY,那么只有很容易找到月份的第一天和最后一天。

下面的查询将接受输入,并在您期望的格式返回结果:

DECLARE @datevalue AS VARCHAR(20) = '15-06-2016'; --12-08-2016'; 
SELECT CONVERT(VARCHAR(10), DATEADD(M, DATEDIFF(M, 0, CONVERT(DATETIME, @datevalue, 105)), 0), 105) [start_date], 
     CONVERT(VARCHAR(10), DATEADD(D, -1, DATEADD(M, DATEDIFF(m, 0, CONVERT(DATETIME, @datevalue, 105)) + 1, 0)), 105) [end_date] 

输出:

start_date end_date 
---------------------- 
01-06-2016 30-06-2016