짧은 답변 : 사용 CAST(... AS DATE)
긴 대답 :
MySQL DATE type에서 :
A "편안한"구문이 허용 : 모든 구두점 문자 구분 기호 사이에 사용할 수있다 날짜 부분 또는 시간 부분. 예를 들어 '98 -12-31 11:30:45 ', '98 .12.31 11 + 30 + 45', '98/12/31 11 * 30 * 45 '및 '98 @ 12 @ 31 11^30^45 '는 동등합니다. 당신이 ADDDATE를 사용하여 실시 예 1 및 2에서
...이 항상 함께 날짜를 반환하지 않습니다 - 상관없이 입력 형식, 분리 '': 당신은
+-----------------------------------------------+
| ADDDATE('2008/10/31 23:59:59',INTERVAL 1 DAY) |
+-----------------------------------------------+
| 2008-11-01 23:59:59 |
+-----------------------------------------------+
또한 형식 정보를 잃는 IFNULL을 사용하므로 문자열을 비교할 때 형식을 비교합니다.
당신은 일이 다시 캐스팅 할 수있는 일 :
mysql> SELECT IFNULL(null, ADDDATE('2008/10/31 23:59:59',INTERVAL 1 DAY)) > '2008/10/31 23:59:59';
+-------------------------------------------------------------------------------------+
| IFNULL(null, ADDDATE('2008/10/31 23:59:59',INTERVAL 1 DAY)) > '2008/10/31 23:59:59' |
+-------------------------------------------------------------------------------------+
| 0 |
+-------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT CAST(IFNULL(null, ADDDATE('2008/10/31 23:59:59',INTERVAL 1 DAY)) AS DATE) > '2008/10/31 23:59:59';
+---------------------------------------------------------------------------------------------------+
| CAST(IFNULL(null, ADDDATE('2008/10/31 23:59:59',INTERVAL 1 DAY)) AS DATE) > '2008/10/31 23:59:59' |
+---------------------------------------------------------------------------------------------------+
| 1 |
+---------------------------------------------------------------------------------------------------+
내 대답은 문자열 - 날짜 변환을 완전히 놓쳤다 :-) – TToni