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

时间:2016-08-03 09:54:41

标签: sql sql-server stored-procedures

在我的SQL Server过程中,我有一个输入参数,如created_date

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

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'

2 个答案:

答案 0 :(得分:1)

由于您的输入格式为dependencies = [ ('some_app', '0003_auto_20160713_0435'), ('stores', '0002_stores'), # This is your latest migration in stores app ] ,因此需要先将其隐藏为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]

答案 1 :(得分:0)

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

EOMONTH适用于SQL Server 2012