Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在新的一年中计算上个月的数据库_Php_Mysql_Sql Server_Wordpress - Fatal编程技术网

Php 在新的一年中计算上个月的数据库

Php 在新的一年中计算上个月的数据库,php,mysql,sql-server,wordpress,Php,Mysql,Sql Server,Wordpress,我有一个自定义的wordpress插件,它运行一个关于前几个月数据库条目的报告,并且全年都在运行,但现在新年已经来临,它没有显示任何结果,因为它会倒数几个月,但会保留到2016年 例如,我在2016年1月1日加载页面,它显示2016年12月的结果,而不是2015年的结果,当时我使用以下方法获取上月的数据 $today = date("Y-m-d H:i:s"); $month_current_start = date("Y-m-")."1 0:0:0"; $currentmonth = d

我有一个自定义的wordpress插件,它运行一个关于前几个月数据库条目的报告,并且全年都在运行,但现在新年已经来临,它没有显示任何结果,因为它会倒数几个月,但会保留到2016年

例如,我在2016年1月1日加载页面,它显示2016年12月的结果,而不是2015年的结果,当时我使用以下方法获取上月的数据

$today = date("Y-m-d H:i:s");   
$month_current_start = date("Y-m-")."1 0:0:0";
$currentmonth = date("m");
$lastmonthnum = $currentmonth - 1;
$last_month_start = date("Y-").$lastmonthnum."-1 0:0:0";
$last_month_end = date("Y-").$lastmonthnum."-31 0:0:0";
然后我有一个SQL,它说

$var = $wpdb->get_var( "SELECT Count(*) FROM `table` WHERE table.timestamp BETWEEN '$last_month_start' AND '$last_month_end' AND table.amount = 1200" );
关于如何修复此查询以使其知道上个月是2015年,有什么提示吗

我不是专业人士,所以我很喜欢初学者风格的帮助:-)


我可以手动运行,但我希望代码能在接下来的几个月内自动运行(因为实际的插件会计算最后四个月)。

在mysql中,您可以选择使用year\u month,请参阅以获取参考

  • 使用代码获取当前年份和月份
  • 相应地更新您的查询
  • 或者,您可以让sql server使用


    使用正在使用的数据库服务器更新您的问题,然后我可以为您编写新的查询。

    最简单的方法是将上个月转换为时间戳,并使用它创建数据库中的格式。根据您目前掌握的情况,可以举一个例子:

    $today = date("Y-m-d H:i:s");
    $month_current_start = date("Y-m-")."1 0:0:0";
    $ltime = strtotime("-1 month");
    $last_month_start = date("Y-m",$ltime)."-1 0:0:0";
    $last_month_end = date("Y-m",$ltime)."-31 0:0:0";
    
    这样做的目的是,它从在
    $ltime=strotime(“-1个月”)行中调用时开始,为1个月前创建一个时间戳从这里开始,它根据时间戳生成月的第一天和最后一天的格式(假设始终有31天,当然^^),您将使用时间戳提供年和月


    如果您想了解strotime的工作原理,请使用代码示例及其输出。

    您使用的是mysql还是sql server?为什么要将PHP中已经存在的逻辑移到sql查询,从而使其过于复杂?如果db已经有了这方面的功能,您可以简化代码,通过使用已经可用的函数,逻辑已经存在于PHP中,并且也存在处理它的函数。他们要求初学者风格的帮助,你想提供一个过于复杂的SQL查询,他们可能不知道如何处理,而不是使用他们所拥有的?