Php 将curdate()-interval替换为$variable-interval

Php 将curdate()-interval替换为$variable-interval,php,mysql,Php,Mysql,下面的代码是从我的数据库中选择并回显按周或月分组的内容。我有两个以上的这些,然后使用抵消得到第二周等 FROM my_db WHERE DATE >= CURDATE() - INTERVAL 10 ".$grouping1." GROUP BY ".$grouping."(DATE) order by DATE desc limit 1 我有两个问题: 我想用一个变量来交换curdate(),这样我们就可以“选择一个开始日期”,然后从该日期开始10周/月 有没有更简单/更好的方法 我尝

下面的代码是从我的数据库中选择并回显按周或月分组的内容。我有两个以上的这些,然后使用抵消得到第二周等

FROM my_db WHERE DATE >= CURDATE() - INTERVAL 10 ".$grouping1." GROUP BY ".$grouping."(DATE) order by DATE desc limit 1
我有两个问题:

  • 我想用一个变量来交换curdate(),这样我们就可以“选择一个开始日期”,然后从该日期开始10周/月

  • 有没有更简单/更好的方法

  • 我尝试用如下变量交换curdate:

    FROM my_db WHERE DATE >= '". $startdate ."' - INTERVAL 10 ".$grouping1." GROUP BY ".$grouping."(DATE) order by DATE desc limit 1
    
    但周/月保持不变,即使变量(开始日期)发生变化

    编辑:My$startdate变量的格式如下2013-05-07,mysql数据库中的日期列为日期格式

    和平 /Adis类似于:

    FROM my_db WHERE DATE >= '".date(Y-m-d, strtotime($my_date))."'
    
    将起作用

    试试这个

    这将从当前日期减去10个月

    FROM my_db WHERE DATE >= '".date("Y-m-d", strtotime("-10 months"))."'
    
    这将从当前日期减去10周

    FROM my_db WHERE DATE >= '".date("Y-m-d", strtotime("-10 weeks"))."'
    

    您是否费心检查生成的查询是否符合您的要求?我的变量已经是Y-m-d格式,执行此操作会将其设置为0您最好使用DateTime对象,然后相应地使用add()和sub()方法-请参阅