2016-08-03 14 views
0

SQL Serverのプロシージャでは、created_dateのような1つの入力パラメータがあります。月月の範囲の終了日を見つけるSQL 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/how-to-get-first-of-a-month-tsql/ –

+0

は以下のURLで回答を得ました。http://stackoverflow.com/questions/16277504/what-is-the-equivalent oracles-last-day-function-in-sql-server-2008 – Srinivasan

答えて

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

EOMONTHある場合は、あなたの入力はSQLサーバー2012

1

から作品はにある形式であるため、最初に隠密する必要があります。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 
関連する問題