我在将记录查询到mysql时遇到问题
下面的解释 用户可以选择一个日期来分配变量fromdate和todate
例如
$fromdate = 2008/01/01
$todate = 2009/10/31
在上面的例子中,我必须使用ff:
进行循环和查询SELECT * FROM table where date BETWEEN '2008/01/01' AND '2008/12/31';
第二个循环
SELECT * FROM table where date BETWEEN '2009/01/01' AND '2009/10/31';
如果$fromdate
和$todate
超过一年,那么我必须每年限制我的查询。但如果不到一年,则在查询中使用$fromdate
和$todate
。
提前致谢
Tirso
答案 0 :(得分:2)
不完全确定你的意思,但你不能使用mysql Year函数吗?
类似的东西:
SELECT * FROM table WHERE YEAR(`yourdatefield`) = '2008'
或
SELECT * FROM table WHERE YEAR(`yourdatefield`) BETWEEN '2008' AND '2009';
答案 1 :(得分:1)
你可以使用这样的东西来计算日期。
$d1 = new DateTime($todate);
$d2 = new DateTime($fromdate);
$d2->modify("+1 year");
$min = min($d1, $d2);
$todate = $min->format('Y/m/d');
如果要对结果进行分页,则必须在执行$fromdate
计算之前修改每个页面上的$todate
。例如,如果您在第二页上,首先将$fromdate
加载到DateTime
对象中并添加一年,如果您在第三页上,则添加两年等等。
答案 2 :(得分:1)
首先,MySQL中的日期格式为YYYY-MM-DD(不是YYYY / MM / DD),因此请确保您这样做。这可能就是你看到错误结果的原因。
BETWEEN
适用于(格式正确的)日期。示例查询:
SELECT * FROM table WHERE date BETWEEN '2008-05-12' AND '2009-04-23';