如何按当前日期过滤MYSQL数据库表

时间:2017-01-06 13:31:49

标签: mysql mysqli

我的表:

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();

这是我试过的查询。但它不起作用。

1 个答案:

答案 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 xend of day x之间的日期,您可以获得相同的结果,而无需更改搜索值。