2017-01-06 4 views
-4

Моего стола:Как фильтровать таблицу базы данных MYSQL по текущей дате

id message  sent_user_id sent_user_name received_user_id received_user_name table_no message_time  status 
1 Need a help   6 Saman kumara     11 Kamal Perera    0 2016-12-07 17:28:41  0 
2 Need a help   6 Saman kumara     10 Nimal Rajapaksha   0 2017-01-05 18:17:35  0 
3 Need a help   6 Saman kumara     10 Nimal Rajapaksha   0 2017-01-05 18:21:20  0 
4 Need a help   6 Saman kumara     10 Nimal Rajapaksha   0 2017-01-05 18:22:15  1 

Мне нужно, чтобы выбрать все строки, в которых message_time равно текущую дату.

SELECT * FROM message_info WHERE message_time = CURDATE(); 

Это запрос, который я пробовал. Но это не работает.

+2

[so] - * нет * бесплатный код запись сервис. Вы должны попытаться ** написать код самостоятельно **. После того, как вы сделаете больше исследований (http://meta.stackoverflow.com/questions/261592), если у вас есть проблема, вы можете ** опубликовать то, что вы пробовали **, с ** ясным объяснением того, что не работает ** и предоставления [** Минимального, полного и проверяемого примера **] (http://stackoverflow.com/help/mcve). Я предлагаю прочитать [ask] хороший вопрос и [идеальный вопрос] (http://codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/). Кроме того, не забудьте взять [тур]. –

+0

Обычно вы не храните sent_user_name и received_user_name в такой таблице. – Strawberry

+0

Я попробовал. Это запрос, который я попробовал. "SELECT * FROM message_info WHERE message_time = CURDATE();" Но это не работает. –

ответ

2
SELECT * FROM message_info WHERE DATE_FORMAT(message_time, "%y-%m-%d") = CURDATE(); 

Вы хотите сравнить dates, так что вы должны удалить временные данные из datetime в таблице. Вы можете сделать это, используя DATE_FORMAT().

Если есть index на колонке message_time вы должны использовать этот запрос:

SELECT * 
FROM message_info 
WHERE message_time 
    BETWEEN DATE_FORMAT(CURDATE(), "%y-%m-%d 00:00:00") AND DATE_FORMAT(CURDATE(), "23-59-59") 

При использовании функции для изменения значения вашей колонки его index не может быть использован. Изменяя алгоритм поиска для поиска дат между beginning of day x и end of day x, вы получаете тот же результат, не изменяя значение для поиска.

Смежные вопросы