2016-08-03 2 views
0

SQL Server 프로 시저에서 created_date과 같은 입력 매개 변수가 하나 있습니다.월 - 월 범위의 끝 날짜를 찾는 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