Выбрать из MySQL, где CURDATE () - PullRequest
       2

Выбрать из MySQL, где CURDATE ()

0 голосов
/ 09 января 2019

В таблице MySQL у меня есть INT(10) столбец r_insert_time, где я храню метки времени.

Теперь я хочу выбрать, где r_insert_time = сегодня CURDATE()

SELECT COUNT(*) FROM rdv WHERE u_id = ? AND r_insert_time = CURDATE()

Теперь это возвращает 0 результатов, несмотря на то, что в течение сегодняшнего дня существуют такие значения, как "1547043955"

Я тоже пробовал:

SELECT COUNT(*) FROM rdv WHERE u_id = ? AND r_insert_time >= CURDATE()

И

SELECT COUNT(*) FROM rdv WHERE u_id = ? AND DATE(r_insert_time) = CURDATE()

И

SELECT COUNT(*) FROM rdv WHERE u_id = ? AND DATE(r_insert_time) >= CURDATE()

И все они возвращают 0.

1 Ответ

0 голосов
/ 09 января 2019

Сначала проверьте, хранится ли поле my_dt как YYYYMMDD, как того требует CURDATE (). Если это так, вам нужно заставить CURDATE () выводить в виде числа вместо строки для сравнения.

Попытка:

SELECT COUNT(*) FROM rdv WHERE u_id = ? AND r_insert_time = CURDATE() + 0

Кроме того, я не уверен, что такое r_insert_time. Вы не пытаетесь сравнить CURDATE () с my_dt? В этом случае это будет:

SELECT COUNT(*) FROM rdv WHERE u_id = ? AND my_dt = CURDATE() + 0

EDIT:

После еще одного взгляда похоже, что вы используете метку времени эпохи. Если вы хотите сравнить это, вам нужно будет использовать что-то вроде UNIX_TIMESTAMP(), чтобы найти диапазон времени эпох, в который может попасть ваша отметка времени.

Попробуйте что-нибудь вроде:

SELECT COUNT(*) FROM rdv WHERE u_id = ? AND r_insert_time >= UNIX_TIMESTAMP(CURDATE()) AND r_insert_time < UNIX_TIMESTAMP(CURDATE() + 1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...