[sql] SQL Server에서 한 달의 일 수를 확인하는 방법은 무엇입니까?

SQL Server에서 주어진 날짜에 대해 한 달의 일 수를 결정해야합니다.

내장 기능이 있습니까? 그렇지 않은 경우 사용자 정의 함수로 무엇을 사용해야합니까?



답변

지정된 달의 첫 번째 날에 다음을 사용할 수 있습니다.

datediff(day, @date, dateadd(month, 1, @date))

모든 날짜에 적용하려면 :

datediff(day, dateadd(day, 1-day(@date), @date),
              dateadd(month, 1, dateadd(day, 1-day(@date), @date)))


답변

SQL Server 2012에서는 EOMONTH (Transact-SQL) 를 사용하여 해당 월의 마지막 날을 가져온 다음 DAY (Transact-SQL) 를 사용하여 해당 월의 일 수를 가져올 수 있습니다.

DECLARE @ADate DATETIME

SET @ADate = GETDATE()

SELECT DAY(EOMONTH(@ADate)) AS DaysInMonth


답변

가장 우아한 솔루션 : 모든 @DATE에서 작동

DAY(DATEADD(DD,-1,DATEADD(MM,DATEDIFF(MM,-1,@DATE),0)))

함수에 던지거나 인라인으로 사용하십시오. 이것은 다른 답변의 모든 여분의 쓰레기없이 원래 질문에 대답합니다.

다른 답변의 날짜 예 :

SELECT DAY(DATEADD(DD,-1,DATEADD(MM,DATEDIFF(MM,-1,'1/31/2009'),0))) 31을 반환합니다.

SELECT DAY(DATEADD(DD,-1,DATEADD(MM,DATEDIFF(MM,-1,'2404-feb-15'),0))) 29를 반환합니다.

SELECT DAY(DATEADD(DD,-1,DATEADD(MM,DATEDIFF(MM,-1,'2011-12-22'),0))) 31을 반환합니다.


답변

훨씬 간단하게 … day(eomonth(@Date))


답변

--Last Day of Previous Month
SELECT DATEPART(day, DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE()),0)))

--Last Day of Current Month
SELECT DATEPART(day, DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE())+1,0)))

--Last Day of Next Month
SELECT DATEPART(day, DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE())+2,0)))

개인적으로 내장 기능이 없으면 UDF를 만들 것입니다.


답변

내가 제안 할게:

SELECT DAY(EOMONTH(GETDATE()))


답변

이 코드는 이번 달의 일수를 알려줍니다.

SELECT datediff(dd,getdate(),dateadd(mm,1,getdate())) as datas

getdate()일수를 계산해야하는 날짜로 변경하십시오 .