我正在创建一个用于人体工学评估的仪表板,并且试图将其中一张卡片显示在仪表板上,以显示当前超过30天的票证。尽管我设置了两张比它早的票,但现在30天内仍未产生任何结果。
<?php echo $db->mysqli_result(dbQuery("SELECT COUNT(*) FROM tickets WHERE DATE(date_opened) > DATE(NOW()) - INTERVAL 30 DAY")); ?>
我可能使用的查询错误,但这是我在查看其他尝试实现类似效果的个人示例时所看到的。
答案 0 :(得分:0)
您要使用DATE_SUB():
> DATE_SUB(NOW(), INTERVAL 60 DAY)
完整查询:
SELECT COUNT(*) FROM tickets WHERE DATE(date_opened) > DATE_SUB(NOW(), INTERVAL 30 DAY);
我对此进行了测试,您的查询返回了0行,而DATE_SUB返回了正确的值。
答案 1 :(得分:0)
我建议:
WHERE date_opened < CURDATE() - INTERVAL 30 DAY
------------------^ note less than
我建议避免使用DATE(date_opened)
,因为那样会阻止使用索引。