Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.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 - Fatal编程技术网

Php 如何仅从上个月的数据库表中提取数据

Php 如何仅从上个月的数据库表中提取数据,php,mysql,Php,Mysql,我只想显示上个月的记录,不包括本月的日期。例如,今天是2月5日,我想显示1月1日到31日的记录 我有一个表-tbl_order_details,其中我需要分别获取当月和上月的所有订单记录。日期类型的列名为orderDate这是我在获取截至日期的当月行时所做的操作: SELECT COUNT(1) FROM tbl_order_details where merchantCode= '$user_code' AND MONTH(orderDate) = MONTH(CURRENT_DATE()

我只想显示上个月的记录,不包括本月的日期。例如,今天是2月5日,我想显示1月1日到31日的记录

我有一个表-tbl_order_details,其中我需要分别获取当月和上月的所有订单记录。日期类型的列名为orderDate这是我在获取截至日期的当月行时所做的操作:

SELECT COUNT(1) 
FROM tbl_order_details 
where merchantCode= '$user_code'
AND MONTH(orderDate) = MONTH(CURRENT_DATE()) 
AND YEAR(orderDate) = YEAR(CURRENT_DATE()) 

但是我不知道如何显示不包括二月记录的一月记录

避免使用日期、月、日、年、SUBSTR、左、右,比如在WHERE或JOIN中提及列,因为您不再使用所述列中存在的索引。例如:其中YEARorderDate=。。。出于上述原因,避免这样做

SELECT * FROM tbl_order_details
    WHERE YEAR(orderDate) = YEAR(CURRENT_DATE - INTERVAL 1 MONTH)
    AND MONTH(orderDate) = MONTH(CURRENT_DATE - INTERVAL 1 MONTH)
<?php
$query_get = 'SELECT * FROM tbl_order_details WHERE YEAR(orderDate) = YEAR(CURRENT_DATE - INTERVAL 1 MONTH) AND MONTH(orderDate) = MONTH(CURRENT_DATE - INTERVAL 1 MONTH)'
?>
我建议使用如下

如果orderDate列的类型为date,请执行以下操作:

SELECT COUNT(1) 
FROM tbl_order_details 
where merchantCode= '$user_code'
AND orderDate BETWEEN DATE_ADD(LAST_DAY(NOW() - INTERVAL 2 MONTH), INTERVAL 1 DAY)
AND LAST_DAY(DATE_ADD(LAST_DAY(NOW() - INTERVAL 2 MONTH), INTERVAL 1 DAY));
将在上个月的第一天返回

DATE_ADD(LAST_DAY(NOW() - INTERVAL 2 MONTH), INTERVAL 1 DAY)
LAST_DAY(DATE_ADD(LAST_DAY(NOW() - INTERVAL 2 MONTH), INTERVAL 1 DAY))
返回上个月的最后一天

DATE_ADD(LAST_DAY(NOW() - INTERVAL 2 MONTH), INTERVAL 1 DAY)
LAST_DAY(DATE_ADD(LAST_DAY(NOW() - INTERVAL 2 MONTH), INTERVAL 1 DAY))

为了编写PHP代码,可以使用strotime函数从PHP本身获取月份和年份,具体取决于表的输入,然后在sql查询中对其进行格式化。例如:

<?php
$month = date("M", strtotime("previous month"));
$year = date("Y", strtotime("this year"));
$query_get = 'SELECT COUNT(1) FROM tbl_order_details where merchantCode= {$user_code} AND MONTH(orderDate) = {$month} AND YEAR(orderDate) = {$year}'
?>

你能为我们提供一些示例输入以供阅读,并为你提供任何帮助吗?你可以用PHP编写SQL,这将给你上个月的结果,你可以一起使用strotime和date函数来应用where子句。请提供你的代码?你试了多少,在哪里被击中。对usi调试更有用的是,我有一个表-tbl_order_details,其中我需要分别获取当月和上月的所有订单记录。日期类型的列名是orderDate这是我在获取当月截止日期的行时所做的:从tbl_order_details中选择COUNT1,其中merchantCode=“$user_code”和MONTHorderDate=MONTHCURRENT_date和YEARorderDate=YEARCURRENT_date,但我无法确定如何显示不包含任何日期的1月份记录2月份的记录