我有一个存储保修日期的MySQL数据库。值为Start_Date和End_Date,我正在尝试计算剩余的保修天数。
示例:
尝试#1-日期时间
#date_1 = 2018-12-01 (From MySQL) - Start / PAST
#date_2 = 2019-01-11 (From MySQL) - End / FUTURE
$d1 = new DateTime($date_1);
$d2 = new DateTime($date_2);
$int = date_diff($d1, $d2);
$r = $int->format('In %a days');
41天之内输出
尝试#2-创建日期
#date_1 = 2018-12-01 (From MySQL) - Start / PAST
#date_2 = 2019-01-11 (From MySQL) - End / FUTURE
$d1 = date_create($date_1);
$d2 = date_create($date_2);
$int = date_diff($d1, $d2);
return $int->format('%a');
输出41
尝试#3-SQL DATEDIFF
$data = $pdo->query("
SELECT *, DATEDIFF(start_date, end_date)
AS date_difference
FROM `warranty`
ORDER BY id
DESC
")->fetchAll();
输出-41
我在做什么错?我只想计算发票保修剩余的天数。
答案 0 :(得分:0)
检查DATEDIFF文档:
date1, date2 Required. Two dates to calculate the number of days between. (date1 - date2)
您需要:
DATEDIFF(end_date, start_date)
答案 1 :(得分:0)
如果我对您的理解正确,则需要使用今天开始,而不是过去的一天,例如
$d1 = new DateTime();
$d2 = new DateTime($date_2);
$int = date_diff($d1, $d2);
$r = $int->format('In %a days');
这将为您提供从今天到保修期结束的剩余时间。