where field = CURDATE()

242
04 июня 2017, 19:22

Такой запрос

SELECT
    *
FROM
    integration_betapost.`tests_st`
WHERE
    add_date = CURDATE()

Который выводит всего две строки, где add_date равно 2017-06-02 00:00:00,хотя в таблице есть много значений типа 2017-06-02 14:02:07 Вопрос,почему они не попадают в выборку?

Answer 1

Вам нужно поле add_date привести к такому же формату YYYY-MM-DD, можно вот так:

SELECT
    *
FROM
    integration_betapost.`tests_st`
WHERE
    DATE(add_date) = CURDATE()
Answer 2

Записи не попадают в выборку потому, что оператор = в 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)=...), но так делать не рекомендуется, так как в этом случае СУБД не сможет использовать индексы, даже если они есть. Что приведет к полному сканированию таблицы с соответствующей потерей производительности

READ ALSO
Как записать выборку из таблицы?

Как записать выборку из таблицы?

Как, в одном запросе, записать выборку по имени оператора из таблицы один, если имя оператора нужно найти во второй таблице по имени клиента

285
Несколько условий в SQL

Несколько условий в SQL

Мне нужно сделать запрос к БД, в котором необходимо выполнить выборку по условиямПричем условий 5, необходимо выполнение хотя бы 4х

379
Как сделать INSERT DUPLICATE KEY UPDATE?

Как сделать INSERT DUPLICATE KEY UPDATE?

есть таблица с полями:

344
mysqli_query не работает последнее INSERT INTO в очереди

mysqli_query не работает последнее INSERT INTO в очереди

Вот есть такой код, не работает последнее условие $query_last, хоте выше, аналогичный код в $query- работает, не пойму в чем проблема

228