MySQL搜索为date_format不起作用

时间:2017-11-02 10:19:49

标签: mysql

我的数据库中有一个字段为TEXT(我知道我应该使用日期,但是这个字段可能有更多的值,而不仅仅是日期)。由于它们只是少数,它不会起飞性能。

我的问题是查询,因为它始终不返回任何值。但是,如果我手动进行查询,则效果很好。我认为它必须是预处理语句中的查询,但无法得到它。

$date = date("d/m/Y");
$query = "SELECT * FROM projects WHERE DATE_FORMAT(expiredate, '%d/%m/%Y') >= DATE_FORMAT(?, '%d/%m/%Y') && id >= (SELECT FLOOR( MAX(id) * RAND()) FROM adsfixed ) ORDER BY id LIMIT 1";

查询应该在项目表中得到一个随机行,其中expiredate列比d / m / Y格式的今天更大或更大(不知道逻辑是否正常,所以我试着解释我需要什么)。

1 个答案:

答案 0 :(得分:1)

将参数转换为日期而不是将日期转换为字符串:

$query = "SELECT * FROM projects WHERE Date(expiredate) >= str_to_date(?, '%d/%m/%Y') && id >= (SELECT FLOOR( MAX(id) * RAND()) FROM adsfixed ) ORDER BY id LIMIT 1";