Как рассчитать дни между двумя датами в PHP? - PullRequest
3 голосов
/ 20 марта 2011

Мне нужно рассчитать дни между датой, которую я получаю из базы данных, и текущей датой.

$upload_date = mysql_query("SELECT Date FROM Setting WHERE ID = $row[ID]");
$current_date = date("Y-m-d");

Как мне это сделать?

Ответы [ 6 ]

3 голосов
/ 20 марта 2011
select datediff(curdate(),'2011-03-01');
2 голосов
/ 20 марта 2011

Если вы хотите сделать это на PHP, используйте класс DateTime :

$current = new DateTime($current_date);
$db_date = new DateTime($upload_date);
$days = $current->diff($db_date)->days;

Или по старой школе:

$days = round((strtotime($current) - strtotime($db_date)) /24 /60 /60);
1 голос
/ 31 октября 2012

Использовать SELECT DATEDIFF ('new_date', 'old_date');

mysql> SELECT DATEDIFF('2006-04-01','2006-04-01');
+-------------------------------------+
| DATEDIFF('2006-04-01','2006-04-01') |
+-------------------------------------+
|                                   0 |
+-------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT DATEDIFF('2006-04-01','2007-04-01');
+-------------------------------------+
| DATEDIFF('2006-04-01','2007-04-01') |
+-------------------------------------+
|                                -365 |
+-------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT DATEDIFF('2006-04-01','2005-04-01');
+-------------------------------------+
| DATEDIFF('2006-04-01','2005-04-01') |
+-------------------------------------+
|                                 365 |
+-------------------------------------+
1 row in set (0.00 sec)

DATEDIFF (выражение, выражение2)

DATEDIFF () возвращает количество дней между датой начала expr и дата окончания expr2. expr и expr2 являются датой или выражения даты и времени. Только части даты значений используются в расчете.

mysql> SELECT DATEDIFF('1997-12-31 23:59:59','1997-12-30');
    -> 1
mysql> SELECT DATEDIFF('1997-11-30 23:59:59','1997-12-31');
    -> -31
1 голос
/ 20 марта 2011

форма http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_datediff

SELECT DATEDIFF( CURDATE(), Date ) FROM ....

и я бы не использовал Date в качестве имени поля, подумайте об изменении этого имени

0 голосов
/ 30 января 2013

Вы можете сделать это простым способом, как показано ниже,

$current_date = date("Y-m-d");          // Current date
$db_date = date("Y-m-d");               // Date from your database
$diff = abs(strtotime($current_date) - strtotime($db_date));
$total_days = floor ($diff /  (60*60*24));
0 голосов
/ 20 марта 2011

Вы можете использовать этот формат http://php.net/manual/en/function.date.php, и он сделает это за вас

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...