1번의
select wt from test where wt > str_to_date('2019-11-20', '%Y-%m-%d');
와 2번의
select wt from test where date_format(wt, '%Y-%m-%d') > '2019-11-20';
는 언뜻 같아보이지만 리턴하는 결과값은 다릅니다.
비교 기준이 문자열이나 datetime 값이냐에 따라 비교 기준이 전혀 달라지며, 최대 1일의 차이를 가지게 됩니다.
1번은 비교 기준이 날짜값입니다. 따라서 '2019-11-20' 문자열은 2019-11-20 00:00:00 (2019년 11월 20일 자정)인 datetime 포맷이 되고, 이것보다 날짜가 최근인 3개의 레코드를 리턴합니다.(wt 필드의 2019년 11월 20일인 필드가 모두 포함됨)
반면 2번은 비교기준이 문자열이 되고 wt 필드의 datetime 값은 시분초가 잘려나간 10자리 문자열이 됩니다. 따라서 '2019-11-20' 보다 큰 문자열을 가진 필드만 리턴하므로 '2019-11-20'은 제외가 되기 때문에 리턴되는 레코드수가 그만큼 줄어들게 되는 것입니다.
(wt 필드의 2019년 11월 20일인 필드는 모두 제외됨)