MySQL - DATE_ADD 월 간격
기능에 문제가 있습니다.DATE_ADD
MySQL에 있습니다.
제 요청은 다음과 같습니다.
SELECT *
FROM mydb
WHERE creationdate BETWEEN "2011-01-01" AND DATE_ADD("2011-01-01", INTERVAL 6 MONTH)
GROUP BY MONTH(creationdate)
문제는 결과적으로 6월이 30일밖에 남지 않아서 7월 1일 결과가 나와서 기능이 제대로 작동하지 않는 것 같습니다.
알 수 있는 방법이 있습니까?DATE_ADD
일을 잘하고 한 달 안에 올바른 일수를 갖는 것?
DATE_ADD
다른 달에 잘 작동합니다.문제는 당신이 6개월을 추가하고 있다는 것입니다.2001-01-01
그리고 7월 1일이 거기에 있을 예정입니다.
다음 작업을 수행할 수 있습니다.
SELECT *
FROM mydb
WHERE creationdate BETWEEN "2011-01-01"
AND DATE_ADD("2011-01-01", INTERVAL 6 MONTH) - INTERVAL 1 DAY
GROUP BY MONTH(creationdate)
OR
SELECT *
FROM mydb
WHERE creationdate >= "2011-01-01"
AND creationdate < DATE_ADD("2011-01-01", INTERVAL 6 MONTH)
GROUP BY MONTH(creationdate)
자세한 내용은 DATE_ADD 설명서를 참조하십시오.
*올바른 구문 사용
음, 이것은 저에게 예상되는 결과입니다. 7월 1일에 6개월을 더하면 됩니다.
mysql> SELECT DATE_ADD( '2011-01-01', INTERVAL 6 month );
+--------------------------------------------+
| DATE_ADD( '2011-01-01', INTERVAL 6 month ) |
+--------------------------------------------+
| 2011-07-01 |
+--------------------------------------------+
expr이 최소값보다 크거나 같고 expr이 max보다 작거나 같으면,
BETWEEN
1을 반환하고, 그렇지 않으면 0을 반환합니다.
여기서 중요한 부분은 7월 1일인 최대값과 같음입니다.
당신이 그렇게 생각하는 것이 옳습니까?DATE_ADD("2011-01-01", INTERVAL 6 MONTH)
'2011-07-01' 대신 '2011-06-30'을 줘야 합니까?물론 2011-01-01 + 6개월은 2011-07-01입니다.당신은 그런 것을 원합니다.DATE_SUB(DATE_ADD("2011-01-01", INTERVAL 6 MONTH), INTERVAL 1 DAY)
.
DATE_ADD
올바르게 작동합니다. 1월 1일과 1월 1일이 2월 1일인 것처럼 1월 1일과 6개월이 7월 1일입니다.
작업 간에는 작업이 포함됩니다.그래서, 당신은 7월 1일까지, 그리고 포함해서 모든 것을 하고 있습니다.(MySQL "between" 절을 참조하십시오. 포함되지 않습니까?)
당신이 해야 할 일은 1일을 빼거나 그 사이 대신 < 연산자를 사용하는 것입니다.
언급URL : https://stackoverflow.com/questions/6845604/mysql-date-add-month-interval
'programing' 카테고리의 다른 글
PHP에서 system(), exec() 및 shell_exec()의 차이점은 무엇입니까? (0) | 2023.09.02 |
---|---|
MySQL에서 보기 이름을 변경하는 방법은 무엇입니까? (0) | 2023.09.02 |
jQuery를 사용하여 기본 링크 클릭 동작을 중지하는 방법 (0) | 2023.09.02 |
ES6 화살표 기능과 함께 jQuery $(이) 사용(이 바인딩은 어휘) (0) | 2023.09.02 |
엔디안 불가지론자 C/C++ 코드를 작성하는 방법은? (0) | 2023.09.02 |