mysql查询使用年份的日期

时间:2009-10-28 07:12:51

标签: php sql mysql

我在将记录查询到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

3 个答案:

答案 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';