복붙노트

[SQL] MySQL의에서 다음 달의 첫 번째와 마지막 날짜를 가져 오기

SQL

MySQL의에서 다음 달의 첫 번째와 마지막 날짜를 가져 오기

어떻게는 다음 달의 처음과 마지막 날은 where 절에 사용되는 얻을 수 있습니까?

해결법

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

    1.사용하다:

    사용하다:

    SELECT
    
    DATE_SUB(
        LAST_DAY(
            DATE_ADD(NOW(), INTERVAL 1 MONTH)
        ), 
        INTERVAL DAY(
            LAST_DAY(
                DATE_ADD(NOW(), INTERVAL 1 MONTH)
            )
        )-1 DAY
    ) AS firstOfNextMonth,
    
    LAST_DAY(
        DATE_ADD(NOW(), INTERVAL 1 MONTH)
    )AS lastOfNextMonth
    
  2. ==============================

    2.다음 달의 마지막 날의 경우, LAST_DAY () 함수를 사용할 수 있습니다 :

    다음 달의 마지막 날의 경우, LAST_DAY () 함수를 사용할 수 있습니다 :

    SELECT LAST_DAY(DATE_ADD(CURDATE(), INTERVAL 1 MONTH));
    +-------------------------------------------------+
    | LAST_DAY(DATE_ADD(CURDATE(), INTERVAL 1 MONTH)) |
    +-------------------------------------------------+
    | 2010-07-31                                      |
    +-------------------------------------------------+
    1 row in set (0.00 sec)
    

    일부 테스트 에지의 경우 :

    SELECT LAST_DAY(DATE_ADD('2010-01-31', INTERVAL 1 MONTH));
    +----------------------------------------------------+
    | LAST_DAY(DATE_ADD('2010-01-31', INTERVAL 1 MONTH)) |
    +----------------------------------------------------+
    | 2010-02-28                                         |
    +----------------------------------------------------+
    1 row in set (0.00 sec)
    
    SELECT LAST_DAY(DATE_ADD('2010-02-28', INTERVAL 1 MONTH));
    +----------------------------------------------------+
    | LAST_DAY(DATE_ADD('2010-02-28', INTERVAL 1 MONTH)) |
    +----------------------------------------------------+
    | 2010-03-31                                         |
    +----------------------------------------------------+
    1 row in set (0.00 sec)
    
    SELECT LAST_DAY(DATE_ADD('2010-08-31', INTERVAL 1 MONTH));
    +----------------------------------------------------+
    | LAST_DAY(DATE_ADD('2010-08-31', INTERVAL 1 MONTH)) |
    +----------------------------------------------------+
    | 2010-09-30                                         |
    +----------------------------------------------------+
    1 row in set (0.00 sec)
    

    달의 첫 날을 얻을 수있는 DATE_FORMAT () 함수의 교묘 한 사용도 있습니다. 다음과 같이 사용할 수 있습니다 :

    SELECT DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL 1 MONTH), '%Y-%m-01');
    +---------------------------------------------------------------+
    | DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL 1 MONTH),'%Y-%m-01') |
    +---------------------------------------------------------------+
    | 2010-07-01                                                    |
    +---------------------------------------------------------------+
    1 row in set (0.00 sec)
    

    따라서:

    SELECT   DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL 1 MONTH), '%Y-%m-01') AS
                FirstDayOfNextMonth,
             LAST_DAY(DATE_ADD(CURDATE(), INTERVAL 1 MONTH)) AS
                LastDayOfNextMonth;
    
    +---------------------+--------------------+
    | FirstDayOfNextMonth | LastDayOfNextMonth |
    +---------------------+--------------------+
    | 2010-07-01          | 2010-07-31         |
    +---------------------+--------------------+
    1 row in set (0.00 sec)
    
  3. ==============================

    3.다음 달의 첫날은 단순히 이번 달 + 1의 마지막 날입니다 :

    다음 달의 첫날은 단순히 이번 달 + 1의 마지막 날입니다 :

    select adddate(last_day(curdate()), 1)
    

    다음 달의 마지막 날은 간단하게 (오늘 + 1 개월)의 마지막 날입니다 :

    select last_day(curdate() + interval 1 month))
    

    다음은 가장 간단한 솔루션입니다. 당신은 짧은 하나를 찾을 수 없을 것입니다.

    현재 달 1 일을해야하는 경우, https://stackoverflow.com/a/28966866/632951 참조

  4. ==============================

    4.

    # FIRST date of next month
    select date_sub(date_add(curdate(), interval 1 month), interval day(curdate())-1 day);
    
    # LAST date of next month
    select date_sub(date_add(curdate(), interval 2 month), interval day(curdate()) day);
    

    확실하지 그 짧은 쿼리,하지만 그들은 일을

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

    5.@DanielVassallo 그것을 설명했듯이, 다음 달의 마지막 날 검색은 간단합니다 :

    @DanielVassallo 그것을 설명했듯이, 다음 달의 마지막 날 검색은 간단합니다 :

    SELECT LAST_DAY(DATE_ADD(CURRENT_DATE(), INTERVAL 1 MONTH));
    

    첫날를 검색하려면 먼저 사용자 정의 FIRST_DAY 기능을 정의 할 수 있습니다 (불행히도 MySQL은 어떤을 제공하지 않습니다)

    DELIMITER ;;
    CREATE FUNCTION FIRST_DAY(day DATE)
    RETURNS DATE DETERMINISTIC
    BEGIN
      RETURN ADDDATE(LAST_DAY(SUBDATE(day, INTERVAL 1 MONTH)), 1);
    END;;
    DELIMITER ;
    

    그리고 당신은 할 수 있습니다 :

    SELECT FIRST_DAY(DATE_ADD(CURRENT_DATE(), INTERVAL 1 MONTH));
    
  6. ==============================

    6.-를 선택 LAST_DAY (NOW ()) + INTERVAL 1 DAY : 다음 달의 첫 번째 날짜를 얻으려면

    -를 선택 LAST_DAY (NOW ()) + INTERVAL 1 DAY : 다음 달의 첫 번째 날짜를 얻으려면

    다음 달의 마지막 날짜 얻으려면 : -를 선택 LAST_DAY을 (NOW () + INTERVAL 1 월)

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

    7.여기에 모든 가능한 솔루션이다. 이 의지의 도움을 희망 ... 그냥 실행이 모든 정보를 얻을 수 있습니다

    여기에 모든 가능한 솔루션이다. 이 의지의 도움을 희망 ... 그냥 실행이 모든 정보를 얻을 수 있습니다

    SELECT 
    
      DATE_SUB(DATE_FORMAT(NOW(),'%Y-%m-%d'),INTERVAL 1 DAY) AS GetLastDay, 
      DATE_FORMAT(NOW(),'%Y-%m-%d') AS GetTodaysDate,
      DATE_ADD(DATE_FORMAT(NOW(),'%Y-%m-%d'),INTERVAL 7 DAY) AS Add7DaysFromTodaysDate,
      DATE_SUB(DATE_FORMAT(NOW(),'%Y-%m-%d'),INTERVAL 7 DAY) AS Substract7DaysFromTodaysDate,
      DATE_ADD(DATE_FORMAT(NOW(),'%Y-%m-%d'),INTERVAL 1 MONTH) AS Add1MonthFromTodaysDate,
      DATE_FORMAT(NOW(),'%Y-%m-01') AS FirstDayCurrentMonth , 
      LAST_DAY(DATE_FORMAT(NOW(),'%Y-%m-%d')) AS lastDayCurrentMonth,
      DATE_SUB(LAST_DAY(DATE_SUB(NOW(), INTERVAL 1 MONTH)), 
                INTERVAL DAY(LAST_DAY(DATE_ADD(NOW(), INTERVAL 1 MONTH)))-1 DAY) AS FirstOfNextMont007,
      LAST_DAY(DATE_SUB(NOW(), INTERVAL 1 MONTH)) AS lastOfpREMonth,
      DATE_SUB(LAST_DAY(DATE_ADD(NOW(), INTERVAL 1 MONTH)), 
                INTERVAL DAY(LAST_DAY(DATE_ADD(NOW(), INTERVAL 1 MONTH)))-1 DAY) AS FirstOfNextMonth,
       LAST_DAY(DATE_ADD(NOW(), INTERVAL 1 MONTH)) AS lastOfNextMonth
    
  8. ==============================

    8.짧은 쿼리 :

    짧은 쿼리 :

    SELECT
    ADDDATE(LAST_DAY(NOW()), 1) AS firstOfNextMonth,
    LAST_DAY(DATE_ADD(NOW(), INTERVAL 1 MONTH)) AS lastOfNextMonth
    
  9. ==============================

    9.PostgreSQL의에서 당신은 완벽한 날짜 잘라 내기 기능을 가지고 있습니다.

    PostgreSQL의에서 당신은 완벽한 날짜 잘라 내기 기능을 가지고 있습니다.

    MySQL을 위해, 나는 몇 가지 아이디어를 줄 수도 여기 토론을 발견했다.

  10. ==============================

    10.

    select Convert(varchar(10),DateAdd(Day, 1, getdate() - Day(getdate()) + 1) -1,105)
    
    select Convert(varchar(10),getdate(),105)
    
    select year(getdate())
    
  11. from https://stackoverflow.com/questions/3009896/get-the-first-and-last-date-of-next-month-in-mysql by cc-by-sa and MIT license