MYSQL中的TIMESTAMPDIFF用于计算2个日期之间的月份数

时间:2012-07-11 21:29:40

标签: php mysql date timestamp

我的服务器使用较旧版本的PHP,因此我遗憾地无法使用$ datetime1-> diff($ datetime2)方法。

我目前正在使用以下代码,但它并没有真正起作用:

$from = explode("-",date("Y-m-d",$recurring_invoices->start_date));
$to = explode("-",date("Y-m-d",$to_time));
$months = ($to[0]-$from[0])*12+$to[1]-$from[1];

将7月30日至6月1日计算为整月。它应该只计算从7月1日到6月1日的整个月的日期。

我注意到有一个MYSQL TIMESTAMPDIFF函数,但我似乎也无法使用它。

$query = "SELECT TIMESTAMPDIFF(MONTH,'$recurring_invoices->start_date','$from_time')";
print_r($this->queryResult($query));

$query = "SELECT TIMESTAMPDIFF(MONTH, from_date, to_date) FROM agenda";
print_r($this->queryResult($query));

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

我认为这应该有效,但是现在未经测试 tested并修复:

list($startYear, $startMonth, $startDay) = explode('-', date('Y-n-j', $recurring_invoices->start_date));
list($endYear, $endMonth, $endDay) = explode('-', date('Y-n-j', $to_time));

$months = 0;
$months += ($endYear-$startYear) * 12;
$months += $endMonth - $startMonth;
if ($startDay > $endDay) {
  $months -= 1;
}

echo $months;