TIMESTAMPDIFF在MYSQL中计算两个日期之间的月数#
我的服务器使用的是旧版本的PHP,因此我不能使用$ datetime1-> diff($ datetime2)方法。TIMESTAMPDIFF在MYSQL中计算两个日期之间的月数#
我目前使用下面的代码,但它并没有真正的工作:
$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));
你的帮助深表感谢!
我认为这应该工作,
,但它是未经测试
现在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;
我不得不稍微修改你的代码,因为它没有完全工作,但是因为我看到了你设置逻辑的方式,所以我能够做到!它的工作原理!谢谢一堆! – steeped 2012-07-11 22:15:17
'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 = $ months - 1; }' – steeped 2012-07-11 22:19:41
@steeped我只是在我抽烟的时候意识到自己的错误。我将用您的代码编辑未来访问者的答案。 – DaveRandom 2012-07-11 22:22:53
所以,你要的是有两个指定的日期之间经过的整月数?那么1个月和10天= 1,26天= 0等等等等? – DaveRandom 2012-07-11 21:39:47
DaveRandom,是的!究竟。这是一个好方法。我显然不是有言语的人。 – steeped 2012-07-11 21:42:52