복붙노트

[SQL] 어떻게 SQL에서 달 1 일을 선택할 수 있습니다?

SQL

어떻게 SQL에서 달 1 일을 선택할 수 있습니다?

난 그냥 날짜 변수 주어진 월의 첫 날을 선택해야합니다.

나는 이러한 종류의 코드를 사용하여이 작업을 수행하는 것은 매우 쉽게 알 수 :

select CAST(CAST(YEAR(@mydate) AS VARCHAR(4)) 
+ '/' + CAST(MONTH(@mydate) AS VARCHAR(2)) + '/01' AS DATETIME)

그러나 이것은 및 아마 매우 빠른 중 하나, 매우 우아하지 않습니다.

이 작업을 수행하는 더 좋은 방법이 있나요? 나는 SQL Server 2008을 사용하고 있습니다.

해결법

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

    1.

    SELECT DATEADD(month, DATEDIFF(month, 0, @mydate), 0) AS StartOfMonth
    
  2. ==============================

    2.위의 대답은 모든뿐만 아니라, 함수에 기초한 방법은 SQL 2012 년 도입

    위의 대답은 모든뿐만 아니라, 함수에 기초한 방법은 SQL 2012 년 도입

    SELECT DATEFROMPARTS(YEAR(@mydate),MONTH(@mydate),1)
    
  3. ==============================

    3.SQL 서버 2012에 시작 :

    SQL 서버 2012에 시작 :

    SELECT DATEADD(DAY,1,EOMONTH(@mydate,-1))
    
  4. ==============================

    4.날짜에 문자열 (예 : "2009년 5월 1일")의 캐스팅은 확실히 더 명료하지만 우리는 코드 A를 발견 월의 첫 번째를 반환 다시하는 동안 ...

    날짜에 문자열 (예 : "2009년 5월 1일")의 캐스팅은 확실히 더 명료하지만 우리는 코드 A를 발견 월의 첫 번째를 반환 다시하는 동안 ...

    DECLARE @Date DATETIME
    //...
    SELECT DATEADD(mm, DATEDIFF(mm,0,@Date), 0)
    
  5. ==============================

    5.간단한 검색어 :

    간단한 검색어 :

    SELECT DATEADD(m, DATEDIFF(m, 0, GETDATE()), 0) 
    -- Instead of GetDate you can put any date.
    
  6. ==============================

    6.그것은 매우 빠르게 아마도. 왜 SQL 함수로 만들 수 없습니다.

    그것은 매우 빠르게 아마도. 왜 SQL 함수로 만들 수 없습니다.

    CREATE FUNCTION [dbo].[GetFirstDayOfMonth] ( @InputDate    DATETIME )
    RETURNS DATETIME
    BEGIN
    
        RETURN CAST(CAST(YEAR(@InputDate) AS VARCHAR(4)) + '/' + 
                    CAST(MONTH(@InputDate) AS VARCHAR(2)) + '/01' AS DATETIME)
    
    END
    GO
    
  7. ==============================

    7.이 역시 작동합니다 :

    이 역시 작동합니다 :

        SELECT DATEADD(DAY,(DATEPART(DAY,@mydate)-1)*(-1),@mydate) AS FirstOfMonth
    
  8. ==============================

    8.이것을 사용하십시오

    이것을 사용하십시오

  9. ==============================

    9.

    SELECT @myDate - DAY(@myDate) + 1
    
  10. ==============================

    10.

    ----Last Day of Previous Month
    SELECT DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE()),0))
    LastDay_PreviousMonth
    ----Last Day of Current Month
    SELECT DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE())+1,0))
    LastDay_CurrentMonth
    ----Last Day of Next Month
    SELECT DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE())+2,0))
    LastDay_NextMonth
    
  11. ==============================

    11.현재 월의 첫 번째와 마지막 날 :

    현재 월의 첫 번째와 마지막 날 :

    select dateadd(mm, -1,dateadd(dd, +1, eomonth(getdate()))) as FirstDay, 
    eomonth(getdate()) as LastDay
    
  12. ==============================

    12.미래 명의 Google은 MySQL을,이 시도 :

    미래 명의 Google은 MySQL을,이 시도 :

    select date_sub(ref_date, interval day(ref_date)-1 day) as day1;
    
  13. ==============================

    13.나는 당신이 필요로하는 날짜로 교체 할 수 있습니다, 작업 할 날짜로 GETDATE ()를 사용했다. 여기에 방법이 작품의 : 먼저 우리는 한달으로 APPEND 후 '01'형식이 바로 YYYYMM 부분을 유지하기 위해 단지 6 개 왼쪽의 문자를 유지하기 위해 절단 ... YYYYMMDD의 날짜를 포맷하고 - 짜잔! 당신은 현재 달 1 일이있다.

    나는 당신이 필요로하는 날짜로 교체 할 수 있습니다, 작업 할 날짜로 GETDATE ()를 사용했다. 여기에 방법이 작품의 : 먼저 우리는 한달으로 APPEND 후 '01'형식이 바로 YYYYMM 부분을 유지하기 위해 단지 6 개 왼쪽의 문자를 유지하기 위해 절단 ... YYYYMMDD의 날짜를 포맷하고 - 짜잔! 당신은 현재 달 1 일이있다.

    SELECT CAST(CONVERT(VARCHAR(6),GETDATE(),112) +'01' AS DATETIME) AS StartOfMonth
    

    BTW, 성능이에 위대하다!

  14. ==============================

    14.당신이 오늘보고와 SQL 서버 2012 이상을 사용하는 경우는 쉽게 물건을 만드는 EOMONTH 기능을 가지고 :

    당신이 오늘보고와 SQL 서버 2012 이상을 사용하는 경우는 쉽게 물건을 만드는 EOMONTH 기능을 가지고 :

    SELECT DATEADD(day, 1, EOMONTH(DATEADD(month, -1, GETDATE()))) as firstdateofmonth
    

    당신은 당신이 원하는 날짜 변수 GETDATE ()를 변경할 수 있습니다.

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

    15.여기서 우리는 달의 첫 번째 날짜와 달의 마지막 날짜에 쿼리 아래에 사용할 수 있습니다.

    여기서 우리는 달의 첫 번째 날짜와 달의 마지막 날짜에 쿼리 아래에 사용할 수 있습니다.

    SELECT DATEADD(DAY,1,EOMONTH(Getdate(),-1)) as 'FD',Cast(Getdate()-1 as Date)
    as 'LD'
    
  16. ==============================

    16.2012 또는 위의 SQL 서버를 사용하는 경우;

    2012 또는 위의 SQL 서버를 사용하는 경우;

    SELECT DATEADD(MONTH, -1, DATEADD(DAY, 1, EOMONTH(GETDATE())))
    
  17. ==============================

    17.

    DECLARE @startofmonth date
    SET @startofmonth = DATEADD(dd,1,EOMONTH(Getdate(),-2))
    

    -2는 당신에게 지난 달 1 일을 얻을 것이다. 즉, GETDATE ()는 10/15/18입니다. 귀하의 결과는 9/1/18 될 것이다. 로 변경 -1 결과가 10/1/18이 될 것입니다. 0 다음 달의 시작이 될 것입니다, 2018년 11월 1일 .. 등 등

    또는

    DECLARE @startofmonth date
    SET @startofmonth = DATEADD(dd,1,EOMONTH(@mydate,-1))
    
  18. ==============================

    18.다음 쿼리를 실행하십시오 :

    다음 쿼리를 실행하십시오 :

    SELECT DATE_ADD (DATE_ADD (LAST_DAY (CURRENT_DATE-INTERVAL 1 DAY), INTERVAL 1 DAY) INTERVAL -1 MONTH)

  19. ==============================

    19.이것은 새로운 기능이 될 수도 있지만 당신은 또한 기존 기능을 사용할 수 있습니다 :

    이것은 새로운 기능이 될 수도 있지만 당신은 또한 기존 기능을 사용할 수 있습니다 :

    select DATEFROMPARTS(year(@mydate),month(@mydate),'01')
    

    변수의 날짜는 예를 들어라면 '2017년 10월 29일' 그것은 '2017년 10월 1일'의 날짜를 반환

    https://docs.microsoft.com/en-us/sql/t-sql/functions/datefromparts-transact-sql?view=sql-server-ver15

  20. ==============================

    20.CONVERT를 선택 (날짜, DATEADD (DD, - (DATEPART (DD, GETDATE ()) - 1) GETDATE ()), 120)

    CONVERT를 선택 (날짜, DATEADD (DD, - (DATEPART (DD, GETDATE ()) - 1) GETDATE ()), 120)

    이 기능은 당신에게 달의 시작 날짜의 날짜 부분을 제공 할 것입니다

  21. ==============================

    21.

    SELECT DATEADD (DAY, -1 * (DAY(GETDATE()) - 1), GETDATE())
    

    .....................................................................

    당신은 시간을 싶지 않는 경우에, DATE로 변환하거나 희망이 0시 0분 0초, 변환 DATE에 다음 다시 DATETIME에 시간 할 수 있도록합니다.

    SELECT CONVERT (DATETIME,  
    CONVERT (DATE, DATEADD (DAY, -1 * (DAY(GETDATE()) - 1),
    GETDATE())))
    

    원하는 날짜로 변경 GETDATE ()

  22. ==============================

    22.나는 개인적인 추천이 난 매우 조건 절, 내 쿼리 속도 아래로 느린에서 사용하는 날짜 함수를하려고 할 때 때문에 아래의 SQL.

    나는 개인적인 추천이 난 매우 조건 절, 내 쿼리 속도 아래로 느린에서 사용하는 날짜 함수를하려고 할 때 때문에 아래의 SQL.

    어쨌든 이것을 시도 주시기 바랍니다.

    select CONCAT(DATEPART(YYYY,@mydate),'-',DATEPART(MM,@mydate),'-01')
    
  23. ==============================

    23.아니 여기에 큰 마음의 경쟁,하지만 그 허용 대답 위의 간단한 제안 약간 다릅니다.

    아니 여기에 큰 마음의 경쟁,하지만 그 허용 대답 위의 간단한 제안 약간 다릅니다.

    select dateadd(day, -(datepart(day,@date)+1,@date)
    
  24. ==============================

    24.내가 포맷을 사용하려면, 당신도 시간을 지정할 수 있습니다

    내가 포맷을 사용하려면, 당신도 시간을 지정할 수 있습니다

    SELECT FORMAT(@myDate,'yyyy-MM-01 06:00') first_of_a_month
    
  25. ==============================

    25.는 SQL 서버 2012 년,

    는 SQL 서버 2012 년,

     select getdate()-DATEPART(day, getdate())+1
    
     select DATEADD(Month,1,getdate())-DATEPART(day, getdate())
    
  26. ==============================

    26.이 쿼리는 MySQL을 아주 잘 작동합니다 :

    이 쿼리는 MySQL을 아주 잘 작동합니다 :

    SELECT concat(left(curdate(),7),'-01') 
    
  27. ==============================

    27.여전히 대답을 찾고있는 누군가를 위해,이 마법처럼 작동하고 떨어진 dateadds로한다. 타임 스탬프는 선택 사항입니다 경우는 지정이 필요하지만 작품도없이.

    여전히 대답을 찾고있는 누군가를 위해,이 마법처럼 작동하고 떨어진 dateadds로한다. 타임 스탬프는 선택 사항입니다 경우는 지정이 필요하지만 작품도없이.

    SELECT left(convert(varchar, getdate(),23),7)+'-01 00:00:00'
    
  28. ==============================

    28.우리는 SQL에서 매개 변수로 전달하는 날짜의 첫 번째 날짜와 마지막 날짜를 가져옵니다

    우리는 SQL에서 매개 변수로 전달하는 날짜의 첫 번째 날짜와 마지막 날짜를 가져옵니다

         @date DATETIME
        SELECT @date = GETDATE()
        SELECT CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(@date)-1),@date),105) AS value,
        'First Day of Current Month' AS name
        UNION
        SELECT CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(DATEADD(mm,1,@date))),
        DATEADD(mm,1,@date)),105),
        'Last Day of Current Month'
        GO
    
    
          **OutPut**
    
    12/01/2019  First Day of Current Month
    12/31/2019  Last Day of Current Month
    
  29. ==============================

    29.다음은 MySQL의에서 그것을 할 거라고 방법은 다음과 같습니다

    다음은 MySQL의에서 그것을 할 거라고 방법은 다음과 같습니다

      select DATE_FORMAT(NOW(), '%Y-%m-1')
    
  30. from https://stackoverflow.com/questions/1520789/how-can-i-select-the-first-day-of-a-month-in-sql by cc-by-sa and MIT license