Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.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日期减去X天_Php_Mysql - Fatal编程技术网

PHP日期减去X天

PHP日期减去X天,php,mysql,Php,Mysql,我用PHP编写了以下代码: date('Y-m-d', strtotime("-7 days")) 我在SQL查询中使用的: $sql="SELECT * from billing_invoices WHERE due_date <= '".date('Y-m-d', strtotime("-7 days"))."' AND (status = 'Unpaid' or status = 'Part Paid') AND statement = '0000-00-00 00:00:00'

我用PHP编写了以下代码:

date('Y-m-d', strtotime("-7 days"))
我在SQL查询中使用的:

$sql="SELECT * from billing_invoices WHERE due_date <= '".date('Y-m-d', strtotime("-7 days"))."' AND (status = 'Unpaid' or status = 'Part Paid') AND statement = '0000-00-00 00:00:00' group by customer_sequence ";
但是返回的日期是当前日期,而不是从
发布日期起的-7天

中间层


根据的PHP手册,还有第二个参数,您可以在其中指定一个时间戳,然后使用该时间戳代替当前时间

int strtotime ( string $time [, int $now ] )
因此,您的代码应该如下所示:

date("Y-m-d", strtotime("-7 days", $_POST["date"]))
也许你必须先把日期转换成时间戳。根据您在
$\u POST[“date”]
中的日期格式,这可能适用于:

date("Y-m-d", strtotime("-7 days", strtotime($_POST["date"])))

SQL不知道什么是
日期($\u POST[“date”],strotime(“-7天”)
。。。。所以你可以用这个

$sql="SELECT * from billing_invoices WHERE due_date <= '".DATE_SUB(CURDATE(),INTERVAL 30 DAY)."' AND (status = 'Unpaid' or status = 'Part Paid') AND statement = '0000-00-00 00:00:00' group by customer_sequence ";

$sql=“SELECT*from billing\u invoices WHERE due\u date您可以使用MySQL中的date\u SUB/INTERVAL函数执行此检查

*注意。-确保将输入的值转义到SQL中

 $sql="SELECT * 
   FROM billing_invoices 
   WHERE due_date <= DATE(DATE_SUB(".$_POST['date'].", INTERVAL -7 DAY))
   AND (status = 'Unpaid' OR status = 'Part Paid') 
   AND statement = '0000-00-00 00:00:00' 
   GROUP BY customer_sequence;";
$sql=“选择*
从账单和发票

截止日期在哪里美元邮政[“日期”]格式是什么?是“Y-m-d”吗?或者时间戳?你为什么用php做这个?选择日期(“1998-01-02”,间隔7天);请参见此处:
date(日期($\u POST[“date”].-7天”);
?@putvande它会起作用吗?我认为您仍然需要添加
date(“Y-m-d”),strotime(日期($\u POST[“date”.-7天”);
或者在OP的情况下
date($\u POST[“date”]),strotime(日期($\u POST[“date”.-7天”);
用作:-
date("Y-m-d", strtotime("-7 days", strtotime($_POST["date"])))
$sql="SELECT * from billing_invoices WHERE due_date <= '".DATE_SUB(CURDATE(),INTERVAL 30 DAY)."' AND (status = 'Unpaid' or status = 'Part Paid') AND statement = '0000-00-00 00:00:00' group by customer_sequence ";
 $sql="SELECT * 
   FROM billing_invoices 
   WHERE due_date <= DATE(DATE_SUB(".$_POST['date'].", INTERVAL -7 DAY))
   AND (status = 'Unpaid' OR status = 'Part Paid') 
   AND statement = '0000-00-00 00:00:00' 
   GROUP BY customer_sequence;";