MySQL에서 다음 달의 첫 번째 날짜와 마지막 날짜 가져오기
where 조항에 다음 달 첫째 날과 마지막 날을 사용하려면 어떻게 해야 합니까?
용도:
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
다음 달 마지막 날에는 다음 기능을 사용할 수 있습니다.
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)
한 달의 첫날을 얻기 위한 기능의 까다로운 사용법도 있습니다.다음과 같이 사용할 수 있습니다.
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)
다음 달의 첫날은 간단히 이달의 마지막 날 + 1:
select adddate(last_day(curdate()), 1)
다음 달 마지막 날은 단순히 마지막 날(오늘 + 1개월)입니다.
select last_day(curdate() + interval 1 month))
이것들은 가장 간단한 해결책입니다.더 짧은 것은 찾을 수 없을 겁니다.
이번 달의 첫날이 필요한 경우 https://stackoverflow.com/a/28966866/632951 을 참조하십시오.
# 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);
그게 가장 짧은 질의인지는 모르겠지만, 효과는 있습니다.
@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));
다음 달 첫 번째 날짜 받기 :-select LAST_DAY(NOW()) + INTERVAL 1 DAY
다음 달 마지막 날짜 받기 :-select LAST_DAY(NOW()+ INTERVAL 1 Month)
가능한 모든 해결책은 다음과 같습니다.이것이 도움이 되기를 ...이 항목만 실행하면 모든 세부 정보를 얻을 수 있습니다.
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
짧은 쿼리:
SELECT
ADDDATE(LAST_DAY(NOW()), 1) AS firstOfNextMonth,
LAST_DAY(DATE_ADD(NOW(), INTERVAL 1 MONTH)) AS lastOfNextMonth
postgresql에는 완벽한 날짜 자르기 함수가 있습니다.
MySQL의 경우 몇 가지 아이디어를 줄 수 있는 토론을 여기서 찾았습니다.
select Convert(varchar(10),DateAdd(Day, 1, getdate() - Day(getdate()) + 1) -1,105)
select Convert(varchar(10),getdate(),105)
select year(getdate())
SELECT DATE_ADD(LAST_DAY('2020-12-14'),INTERVAL 1 DAY) AS 'FIRST DAY OF NEXT MONTH';
+----------------------------+
| FIRST DAY OF NEXT MONTH |
+----------------------------+
| 2021-01-01 |
+----------------------------+
1 row in set (1.06 sec)
SELECT DATE_ADD(LAST_DAY(NOW()),INTERVAL 1 MONTH) AS 'LAST DAY OF NEXT MONTH';
+------------------------+
| LAST DAY OF NEXT MONTH |
+------------------------+
| 2020-09-30 |
+------------------------+
1 row in set (0.51 sec)
언급URL : https://stackoverflow.com/questions/3009896/get-the-first-and-last-date-of-next-month-in-mysql
'it-source' 카테고리의 다른 글
환경 변수에 따라 Spring Boot application.properties를 설정합니다. (0) | 2023.09.28 |
---|---|
비주얼 에디터와 같은 워드프레스를 찾습니다. (0) | 2023.09.28 |
#1060 - 중복된 열 이름 'id' (0) | 2023.09.28 |
Gravatar 더 이상 작동하지 않음 https (0) | 2023.09.28 |
데이터 유형 CLOB를 VARCHAR2(sql)로 변경하는 방법 (0) | 2023.09.28 |