복붙노트

[SQL] SQL의 달의 마지막 날을 받기

SQL

SQL의 달의 마지막 날을 받기

나는 SQL의 날짜로 주어진 달의 마지막 날을 얻을 필요가있다. 나는 달 1 일이있는 경우,이 같은 작업을 수행 할 수 있습니다 :

DATEADD(DAY, DATEADD(MONTH,'2009-05-01',1), -1)

그러나 아무도 내가 주어진 날짜의 달의 마지막 날을 찾을 수 있도록 그것을 일반화하는 방법을 알고 있는가?

해결법

  1. ==============================

    1.여기 내 버전입니다. 어떤 문자열 조작 또는 필요한 주조, 그냥 하나 DATEADD, 연도와 월 기능에 각을 호출하지 :

    여기 내 버전입니다. 어떤 문자열 조작 또는 필요한 주조, 그냥 하나 DATEADD, 연도와 월 기능에 각을 호출하지 :

    DECLARE @test DATETIME
    SET @test = GETDATE()  -- or any other date
    
    SELECT DATEADD(month, ((YEAR(@test) - 1900) * 12) + MONTH(@test), -1)
    
  2. ==============================

    2.SQL 서버 2012에서 당신은 EOMONTH 기능을 사용할 수 있습니다.

    SQL 서버 2012에서 당신은 EOMONTH 기능을 사용할 수 있습니다.

    통사론

    EOMONTH ( start_date [, month_to_add ] ) 
    
    SELECT EOMONTH(@SomeGivenDate)
    
  3. ==============================

    3.당신은 DAY () 함수를 사용하여 날짜에서 일을 얻을 수 있습니다 :

    당신은 DAY () 함수를 사용하여 날짜에서 일을 얻을 수 있습니다 :

    dateadd(day, -1, dateadd(month, 1, dateadd(day, 1 - day(date), date)))
    
  4. ==============================

    4.나는이 오래된 질문이다 그러나 여기에서 나를 위해 작동 다른 해결책을 알고

    나는이 오래된 질문이다 그러나 여기에서 나를 위해 작동 다른 해결책을 알고

    SET @dtDate = "your date"
    DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,@dtDate)+1,0))
    

    그리고 어떤 사람이 여기에 다른 예제를 찾고 있다면하는 것이 링크가 http://blog.sqlauthority.com/2007/08/18/sql-server-find-last-day-of-any-month-current-previous-next /

    나는이 다른 어떤 사람 도움이되기를 바랍니다. 유래 바위 !!!!

  5. ==============================

    5.SQL 서버에서 작동

    SQL 서버에서 작동

    Declare @GivenDate datetime
    SET @GivenDate = GETDATE()
    
    Select DATEADD(MM,DATEDIFF(MM, 0, @GivenDate),0) --First day of the month 
    
    Select DATEADD(MM,DATEDIFF(MM, -1, @GivenDate),-1) --Last day of the month
    
  6. ==============================

    6.진술을 바탕으로 :

    진술을 바탕으로 :

    SELECT DATEADD(MONTH, 1, @x)           -- Add a month to the supplied date @x
    

    SELECT DATEADD(DAY,  0 - DAY(@x), @x)  -- Get last day of month previous to the supplied date @x
    

    어떻게 이전 달의 마지막 날 (제공된 날짜의 월의 즉 마지막 날) 날짜 @x에 한 달을 추가하고 다음 검색에 대한

    DECLARE @x  DATE = '20-Feb-2012' 
    SELECT DAY(DATEADD(DAY,  0 - DAY(DATEADD(MONTH, 1, @x)), DATEADD(MONTH, 1, @x)))
    

    참고 : 이것은 2008 R2 SQL Server를 사용하여 테스트했다

  7. ==============================

    7.그냥 조금에서 수식을 확장 :

    그냥 조금에서 수식을 확장 :

    dateadd(day, -1,
        dateadd(month, 1,
            cast(month('5/15/2009') as varchar(2)) + 
            '/1/' + 
            cast(year('5/15/2009') as varchar(4)))
    
  8. ==============================

    8.SQL 서버 2012 이상 사용 EOMONTH를 들어 달의 마지막 날짜를 얻을 수 있습니다

    SQL 서버 2012 이상 사용 EOMONTH를 들어 달의 마지막 날짜를 얻을 수 있습니다

    현재 달의 디스플레이 종료 날짜에 SQL 쿼리

    DECLARE @currentDate DATE = GETDATE()
    SELECT EOMONTH (@currentDate) AS CurrentMonthED
    

    다음 달의 디스플레이 종료 날짜에 SQL 쿼리

    DECLARE @currentDate DATE = GETDATE()
    SELECT EOMONTH (@currentDate, 1 ) AS NextMonthED
    
  9. ==============================

    9.SQL Server를 사용, 여기에 달의 마지막 날을 찾을 수있는 또 다른 방법은 다음과 같습니다

    SQL Server를 사용, 여기에 달의 마지막 날을 찾을 수있는 또 다른 방법은 다음과 같습니다

    SELECT DATEADD(MONTH,1,GETDATE())- day(DATEADD(MONTH,1,GETDATE()))
    
  10. ==============================

    10.WinSQL 지난 달의 마지막 날을 (얻을 즉 오늘 2017년 2월 9일, 반환 2017년 1월 31일입니다 :  DATEADD 선택 (일, - 일 (오늘 ())는 오늘 ())

    WinSQL 지난 달의 마지막 날을 (얻을 즉 오늘 2017년 2월 9일, 반환 2017년 1월 31일입니다 :  DATEADD 선택 (일, - 일 (오늘 ())는 오늘 ())

  11. ==============================

    11.다음 쿼리를 실행하려고, 그것은 당신에게 당신이 원하는 모든 것을 제공합니다 :)

    다음 쿼리를 실행하려고, 그것은 당신에게 당신이 원하는 모든 것을 제공합니다 :)

    Declare @a date =dateadd(mm, Datediff(mm,0,getdate()),0)
    Print('First day of Current Month:')
    Print(@a)
    Print('')
    set @a = dateadd(mm, Datediff(mm,0,getdate())+1,-1)
    Print('Last day of Current Month:')
    Print(@a)
    Print('')
    
    Print('First day of Last Month:')
    set @a = dateadd(mm, Datediff(mm,0,getdate())-1,0)
    Print(@a)
    Print('')
    
    Print('Last day of Last Month:') 
    set @a = dateadd(mm, Datediff(mm,0,getdate()),-1)
    Print(@a)
    Print('')
    
    
    Print('First day of Current Week:')
    set @a = dateadd(ww, Datediff(ww,0,getdate()),0)
    Print(@a)
    Print('')
    
    Print('Last day of Current Week:')
    set @a = dateadd(ww, Datediff(ww,0,getdate())+1,-1)
    Print(@a)
    Print('')
    
    Print('First day of Last Week:')
    set @a =  dateadd(ww, Datediff(ww,0,getdate())-1,0)
    Print(@a)
    Print('')
    
    Print('Last day of Last Week:')
    set @a =  dateadd(ww, Datediff(ww,0,getdate()),-1)
    Print(@a)
    
  12. ==============================

    12.WinSQL : 나는 지난 달에 대한 모든 레코드를 반환하고 싶었 :

    WinSQL : 나는 지난 달에 대한 모든 레코드를 반환하고 싶었 :

    where DATE01 between dateadd(month,-1,dateadd(day,1,dateadd(day,-day(today()),today()))) and dateadd(day,-day(today()),today())
    

    이 같은 일을 :

    where month(DATE01) = month(dateadd(month,-1,today())) and year(DATE01) = year(dateadd(month,-1,today()))
    
  13. ==============================

    13.이 쿼리도 사용할 수 있습니다.

    이 쿼리도 사용할 수 있습니다.

    DECLARE @SelectedDate DATE =  GETDATE()
    
    SELECT DATEADD(DAY, - DAY(@SelectedDate), DATEADD(MONTH, 1 , @SelectedDate)) EndOfMonth
    
  14. ==============================

    14.제 2 센트 :

    제 2 센트 :

    select DATEADD(DAY,-1,DATEADD(MONTH,1,DATEADD(day,(0-(DATEPART(dd,'2008-02-12')-1)),'2008-02-12')))
    

    주권

  15. ==============================

    15.당신이 자주 필요하면 매우 빠르고, 인라인 TVF, 그것을 포장 :

    당신이 자주 필요하면 매우 빠르고, 인라인 TVF, 그것을 포장 :

    http://sqlblog.com/blogs/alexander_kuznetsov/archive/2009/06/21/calculating-third-wednesday-of-the-month-with-inline-udfs.aspx ,

  16. ==============================

    16.SQL 서버 2005를 사용, 이것은 나를 위해 작동합니다 :

    SQL 서버 2005를 사용, 이것은 나를 위해 작동합니다 :

    select dateadd(dd,-1,dateadd(mm,datediff(mm,0,YOUR_DATE)+1,0))
    

    기본적으로, 당신은 YOUR_DATE에 대한 (SQL 서버) 시간의 시작부터 개월 수를 얻을. 그런 다음 달의 일련 번호를 얻기 위해 여기에 하나를 추가 할 수 있습니다. 그런 다음 당신은 다음 달 1 일의 날짜를 얻을 수 0 개월이 번호를 추가합니다. 이것에서 당신은 다음 YOUR_DATE의 마지막 날에 도착하기 하루 뺍니다.

  17. ==============================

    17.이것은 마이크로 소프트 SQL 서버 2005를 사용, 나를 위해 작동합니다 :

    이것은 마이크로 소프트 SQL 서버 2005를 사용, 나를 위해 작동합니다 :

    DATEADD(d,-1,DATEADD(mm, DATEDIFF(m,0,'2009-05-01')+1,0))
    
  18. ==============================

    18.예를 들어, 어떤 달의 31 일 일부 기준일을 가지고 '20011231'. 그런 다음 사용 절차에 따라, (I 아래 실시 예 3과 동일 만 @dt 값 다르다 주었다).

    예를 들어, 어떤 달의 31 일 일부 기준일을 가지고 '20011231'. 그런 다음 사용 절차에 따라, (I 아래 실시 예 3과 동일 만 @dt 값 다르다 주었다).

    declare @dt datetime;
    
    set @dt = '20140312'
    
    SELECT DATEADD(month, DATEDIFF(month, '20011231', @dt), '20011231');
    
    
    
    set @dt = '20140208'
    
    SELECT DATEADD(month, DATEDIFF(month, '20011231', @dt), '20011231');
    
    
    
    set @dt = '20140405'
    
    SELECT DATEADD(month, DATEDIFF(month, '20011231', @dt), '20011231');
    
  19. ==============================

    19.나는 기능을 다음과 같은 쓴, 그것을 작동합니다.

    나는 기능을 다음과 같은 쓴, 그것을 작동합니다.

    이 날짜 시간 데이터 형식을 반환합니다. 제로시, 분, 초, 밀리 초.

    CREATE Function [dbo].[fn_GetLastDate]
    (
        @date datetime
    )
    returns datetime
    as
    begin
    
    declare @result datetime
    
     select @result = CHOOSE(month(@date),  
     DATEADD(DAY, 31 -day(@date), @date),
     IIF(YEAR(@date) % 4 = 0, DATEADD(DAY, 29 -day(@date), @date), DATEADD(DAY, 28 -day(@date), @date)), 
     DATEADD(DAY, 31 -day(@date), @date) ,
     DATEADD(DAY, 30 -day(@date), @date), 
     DATEADD(DAY, 31 -day(@date), @date),
     DATEADD(DAY, 30 -day(@date), @date), 
     DATEADD(DAY, 31 -day(@date), @date),
     DATEADD(DAY, 31 -day(@date), @date),
     DATEADD(DAY, 30 -day(@date), @date),
     DATEADD(DAY, 31 -day(@date), @date),
     DATEADD(DAY, 30 -day(@date), @date), 
     DATEADD(DAY, 31 -day(@date), @date))
    
     return convert(date, @result)
    
    end
    

    그것은 아주 사용하기 쉽습니다. 예 2 :

    select [dbo].[fn_GetLastDate]('2016-02-03 12:34:12')
    
    select [dbo].[fn_GetLastDate](GETDATE())
    
  20. ==============================

    20.

    ---Start/End of previous Month 
    Declare @StartDate datetime, @EndDate datetime
    
    set @StartDate = DATEADD(month, DATEDIFF(month, 0, GETDATE())-1,0) 
    set @EndDate = EOMONTH (DATEADD(month, DATEDIFF(month, 0, GETDATE())-1,0)) 
    
    SELECT @StartDate,@EndDate
    
  21. from https://stackoverflow.com/questions/1051488/get-the-last-day-of-the-month-in-sql by cc-by-sa and MIT license