PHP日期减去X天
我用PHP编写了以下代码: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'
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;";