2011-03-02 7 views
0

달의 첫 번째 달을 찾고 싶습니다. 또한 3 일 또는 5 일, 15 일 또는 어느 날을 찾고 싶습니다. 어떻게 찾을 수 있습니까? 나는 첫날과 월말을 찾는 법을 알고있어. 다른 날을 찾고 싶다.SQL 쿼리에서 첫날과 다른 것을 찾고 싶습니다.

+3

사용중인 RDBMS는 무엇입니까? –

+0

SQL Server를 사용하는 경우 http://blog.sqlauthority.com/2007/08/18/sql-server-find-last-day-of-any-month-current-previous-next/ 및 Andriy의 게시물을 따르십시오. –

답변

0

한 달의 첫날 찾기 방법을 알고있는 경우 2 일, 4 일 또는 14 일 간격을 첫 번째 날에 추가하여 각각 3 일, 이 달의 5 일 또는 15 일.

마찬가지로 원하는 일 수를 추가하여 원하는 달의 날짜를 얻을 수 있습니다.

다른 RDBMS는 목표를 달성하기 위해 다른 구문을 제공 할 수 있습니다. @MonthBeginning 가정하면 여기 예를 들어, 얻을 수있는 방법은 한 달의 첫 날을 나타내는 date 또는 datetime 값으로, 마이크로 소프트 SQL 서버의 같은 달 5 일 : 다시

SELECT DATEADD(day, 4, @MonthBeginning) AS FifthDay 

, 그것은하지 않을 수 있습니다 RDBMS가 MS SQL Server가 아닌 경우 그렇게해야합니다.

1

SQL Server에서이 달의 첫날을 얻는 방법을 모르는 사람들은 다음과 같이 할 수 있습니다. 이것은 또한 5 번째, 10 번째 또는 무엇이든 필요한 것입니다.

DECLARE @FirstDay DATETIME 
SET @FirstDay = (DATEADD(MONTH, DATEDIFF(MONTH, -1, GETDATE()) - 1, -1) + 1) 

SELECT GETDATE() AS CurrentDay 
     , @FirstDay AS FirstDay 
     , DATEADD(d, 10, @FirstDay-1) AS TenthDay 

-1 DateAdd 함수가 예를 들어 당신에게 11를 줄 것이다 firstday,에 일의 수를 추가 할 것입니다 때문에 DateAdd 함수의 @FirstDay이 후. 당연히 당신은 -1을 쓰지 않고 하루를 더 적게 만들 수 있습니다. 그러나 나는 그것을 포함하는 것을 선호합니다. 자신에 맞게.

+1

'DATEDIFF (MONTH, -1, GETDATE()) - 1'은 본질적으로'DATEDIFF (MONTH, 0, GETDATE())와 동일합니다, 그렇지 않습니까? 실제로, 모든 계산은'DATEADD (월, DATEDIFF (MONTH, 0, GETDATE()), 0)'로 단순화 될 수 있습니다. 어쨌든, 당신의 방법은 효과가 있습니다. 그것 이외에,'@ FirstDay-1'에 실제 일수를 더하는 것은, 내가 제안한 방법과 동등하지만 더 나은 생각이다. –

+0

나는 당신이 단순화 한 것을 더 좋아한다. –

관련 문제