【问题标题】:How to calculate days between two dates in PHP?如何在 PHP 中计算两个日期之间的天数?
【发布时间】:2011-03-20 15:13:05
【问题描述】:

我需要计算从数据库中获取的日期与当前日期之间的天数。

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

我该怎么做?

【问题讨论】:

  • 你能输入日期的格式吗?
  • 他们都是 YYYY-MM-DD。
  • $daysDelta = floor((mktime() - strtotime($database['Date']) / 86400); 也许?

标签: php mysql date


【解决方案1】:
select datediff(curdate(),'2011-03-01');

【讨论】:

    【解决方案2】:

    如果你想在 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);
    

    【讨论】:

      【解决方案3】:

      使用 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(expr,expr2)

      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
      

      【讨论】:

        【解决方案4】:

        表格http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_datediff

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

        我不会使用Date 作为字段名,考虑更改此名称

        【讨论】:

          【解决方案5】:

          你可以使用这种格式http://php.net/manual/en/function.date.php,它会为你做的

          【讨论】:

            【解决方案6】:

            你可以通过如下简单的方式做到这一点,

            $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));
            

            【讨论】:

              猜你喜欢
              • 2011-04-08
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-02-26
              • 2010-10-07
              • 1970-01-01
              相关资源
              最近更新 更多