我有一个自定义的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年吗?
我没有专业,所以我喜欢初学者风格的帮助: - )
我可以手动操作,但我希望代码能够在接下来的几个月内自动运行(因为实际的插件会计算最近四个月)。
答案 0 :(得分:1)
最简单的方法是将上个月转换为时间戳,并使用它来创建数据库中的格式。基于你目前所拥有的一个例子是:
$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";
这是做什么的,它是在1个月前制作一个时间戳,从行$ltime = strtotime("-1 month");
开始调用它从那里开始制作该月的第一天和最后一天的格式(假设有总是31天当然^^)基于时间戳,您将用它来提供年份和月份。
PHP Sandbox使用代码示例及其输出,如果您想要了解strtotime
的工作方式。
答案 1 :(得分:0)
在mysql中,您可以选择使用year_month,请参阅this以供参考。
或者您可以使用date_add function
让您的SQL Server为您完成所有工作 使用您正在使用的数据库服务器更新您的问题,然后我可以为您编写新查询。