如何按当前日期过滤MYSQL数据库表
我的桌子:如何按当前日期过滤MYSQL数据库表,mysql,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
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
我需要选择消息时间等于当前日期的所有行
SELECT * FROM message_info WHERE message_time = CURDATE();
这是我试过的问题。但它不起作用
SELECT * FROM message_info WHERE DATE_FORMAT(message_time, "%y-%m-%d") = CURDATE();
您希望比较日期,因此必须从表中的datetime中删除时间数据。您可以使用DATE\u格式来完成此操作
如果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")
当使用函数更改列的值时,不能使用其索引。通过更改搜索算法以查找从x日开始到x日结束之间的日期,您将获得相同的结果,而无需更改搜索值。不是免费的代码编写服务。您应该尝试自己编写代码。之后,如果你有问题,你可以张贴你已经尝试了一个明确的解释什么是不工作,并提供一个解决方案。我建议你读一个好的问题和答案。另外,请确保使用。您通常不会在这样的表中存储发送的\u user\u name和接收的\u user\u name。我试过了。这是我尝试过的问题。从消息信息中选择*,其中消息时间=CURDATE;但它不起作用。