我的表:
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();
这是我试过的查询。但它不起作用。
答案 0 :(得分: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
之间的日期,您可以获得相同的结果,而无需更改搜索值。