Попробуйте использовать сравнение диапазонов вместо прямого равенства.Другими словами, перепишите ваш запрос как
SELECT username, COUNT(*) AS TotalUser
FROM table
WHERE CheckDate BETWEEN CURDATE() AND ADDDATE(CURDATE(), INTERVAL 1 DAY)
или, возможно,
SELECT username, COUNT(*) AS TotalUser
FROM table
WHERE CheckDate >= CURDATE() AND
CheckDate < ADDDATE(CURDATE(), INTERVAL 1 DAY)
Посмотрите, поможет ли это.
РЕДАКТИРОВАТЬ: Или первый запрос может быть переработан как
SELECT username, COUNT(*) AS TotalUser
FROM table
WHERE CheckDate BETWEEN CURDATE() AND
ADDDATE(ADDDATE(CURDATE(), INTERVAL 1 DAY), INTERVAL -1 SECOND)
но это начинает становиться довольно уродливым, и я не уверен, разрешены ли отрицательные числа в спецификаторах INTERVAL.
В любом случае, дело в том, что когда вы обнаружите, что хотите усечьдата, чтобы увидеть, совпадает ли она с какой-либо другой датой, лучше часто использовать ранжированное сравнение.В более общем смысле, старайтесь избегать использования функций для значений столбцов в предложении WHERE, если есть какой-либо способ избежать этого.
Делитесь и наслаждайтесь.