2016-08-03 67 views
0

在我的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://stackoverflow.com/questions/16277504/what-is-the-equivalent -of-預言,末日的功能,在-SQL服務器2008 – Srinivasan

回答

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

EOMONTH從SQL Server 2012

1

工作由於您的輸入在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 
相關問題