我使用以下代码(基于此http://goo.gl/5HhSx)来计算日期之间的差异:
<?php
$date1 = '2012-03-29';
$date2 = '2012-04-02';
$datetime1 = date_create($date1);
$datetime2 = date_create($date2);
$interval = date_diff($datetime1, $datetime2);
echo $interval->format('%a days');
?>
差异是4天.March有固定价格(30€/天),4月有另一个(40€/天)。 有没有办法把整个价格加起来?三月到游行结束还有两天从四月开始?我该如何正确添加它们? 任何帮助,将不胜感激。感谢。
答案 0 :(得分:0)
从日期中提取月份,如下所示:
SELECT MONTH('8/14/04') as "Month";
对于“2012-03-29”和“2012-04-02”之间的每个日期,然后相应地更新表格。
如果你想要加总和,那么使用存储过程-declare一个初始化为零的变量'sum',并使用像CASE '04' then sum+=30 , CASE '03' then sum+=20
这样的开关案例添加。或者,您也可以在计算过程中使用聚合函数。
答案 1 :(得分:0)
对于您的确切示例,这有效:
$date1 = '2012-03-29';
$dateBoundary = substr($date1, 0, 8).date('t', strtotime($date1));
$date2 = '2012-04-02';
$marchPrice = 30;
$aprilPrice = 40;
$datetime1 = date_create($date1);
$datetime1Boundary = date_create($dateBoundary);
$datetime2 = date_create($date2);
$interval1 = date_diff($datetime1, $datetime1Boundary);
$interval2 = date_diff($datetime1Boundary, $datetime2);
$totalPrice = ($interval1->format('%d') * $marchPrice) + ($interval2->format('%d') * $aprilPrice);
echo number_format($totalPrice, 2);
您当然可以推断出跨越多个月的时期的想法。
答案 2 :(得分:0)
实现目标结果的简要逻辑。
参考mktime()和Date()函数