我的数据库中有一个字段为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格式的今天更大或更大(不知道逻辑是否正常,所以我试着解释我需要什么)。
答案 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";