我有两个日期存储在mysql数据库中(Type = date)。例如 -
日期1 = 2010-09-20
日期2 = 2010-10-20
我想计算这两个日期之间的天数。所以试过这个 -
$number_days = (strtotime($date2) - strtotime($date1) / (60 * 60 * 24));
但这会返回49
怎么样?
-------------------------------------更新--------- ---------------------------------
好的,我意识到我的问题导致了一些混乱。我正在使用另一个函数来检索日期1,由于各种原因,这个日期没有正确返回,因此给出的天数实际上是正确的。当我从数据库中检索到正确的日期时,我上面的计算有效,考虑到/ over -
的优先级感谢您的回复。
答案 0 :(得分:16)
/
的{{3}}高于-
因此(a - b / c)
将被视为( a - (b/c) )
,但您需要的是( (a - b) / c )
所以试试:
$number_days = (strtotime($date2) - strtotime($date1)) / (60 * 60 * 24);
答案 1 :(得分:1)
您可以使用MySql查询
执行此操作SELECT (TO_DAYS( date1 ) - TO_DAYS( date2 )) as difference FROM MyTable
http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_to-days
答案 2 :(得分:1)
如果您从MySQL数据库中获取这两个日期,我总是发现在SQL查询期间将它们转换为UnixDateTime整数格式更容易。它们以这种格式更容易处理。
您的查询将如下所示:
SELECT *, UNIX_TIMESTAMP(date1) date1_u, UNIX_TIMESTAMP(date2) as date2_u from mytable
我总是发现这样做要比将日期作为字符串更好,然后不得不混淆PHP笨重的日期处理函数。
也就是说,PHP5.3中的日期类要好得多 - 它甚至还有日期加/减功能,这也比strtotime()更好地解决你的问题......假设你使用的是PHP 5.3。
希望有所帮助。但我知道这并没有直接回答这个问题!