Такой запрос
SELECT
*
FROM
integration_betapost.`tests_st`
WHERE
add_date = CURDATE()
Который выводит всего две строки, где add_date равно 2017-06-02 00:00:00,хотя в таблице есть много значений типа 2017-06-02 14:02:07
Вопрос,почему они не попадают в выборку?
Вам нужно поле add_date привести к такому же формату YYYY-MM-DD, можно вот так:
SELECT
*
FROM
integration_betapost.`tests_st`
WHERE
DATE(add_date) = CURDATE()
Записи не попадают в выборку потому, что оператор = в MySQL требует строгого равенства аргументов, а 2017-06-02 00:00:00 не равно 2017-06-02 14:02:07. Вы можете искать например все даты-время, которые больше начала текущего дня так:
SELECT * FROM integration_betapost.`tests_st`
WHERE add_date >= CURDATE()
Или например взять записи от начала текущего дня до текущего времени в текущем дне:
SELECT * FROM integration_betapost.`tests_st`
WHERE add_date between CURDATE() and NOW()
Или, например взять строго записи за текущие сутки:
SELECT * FROM integration_betapost.`tests_st`
WHERE add_date >= CURDATE() and add_date < CURDATE()+INTERVAL 1 DAY
Можно конечно явно привести колонку к дате, без времени (date(add_date)=...), но так делать не рекомендуется, так как в этом случае СУБД не сможет использовать индексы, даже если они есть. Что приведет к полному сканированию таблицы с соответствующей потерей производительности
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости