【问题标题】:Storing DateTime in MySql using PHP and performing subtraction to get difference in days and hours使用 PHP 在 MySql 中存储 DateTime 并执行减法以获得天和小时的差异
【发布时间】:2011-09-13 03:22:07
【问题描述】:

我用谷歌搜索了一下,但我不知道如何使用 DateTime 函数并使用 PHP 存储在 MySql 中。我还需要从当前日期中减去数据库中存储的日期,以及从当前时间中存储的时间。我不想使用单独的 date() 和 time() 函数。我希望使用 PHP 将日期和时间都存储在 MySql 的一列中,并获得日期和时间相减的单独结果。我怎样才能做到这一点?

【问题讨论】:

  • 你到底在坚持什么?你能显示一些代码吗?
  • 我没有密码。我必须编码,但我不知道如何编码。

标签: php mysql datetime


【解决方案1】:

试试:

<?php
    $insert_query   =   "INSERT INTO `table_name`(`date_time`) VALUES('".date('Y-n-j H:i:s', time())."')";

    function timeDifference($timestamp, $type = 'd'){
        $diff_seconds   =   $timestamp - time();
        $diff_secs      =   $diff_seconds;
        $diff_weeks     =   floor($diff_seconds/604800);
        $diff_seconds  -=   $diff_weeks   * 604800;
        $diff_days      =   floor($diff_seconds/86400);
        $diff_seconds  -=   $diff_days    * 86400;
        $diff_hours     =   floor($diff_seconds/3600);
        $diff_seconds  -=   $diff_hours   * 3600;
        $diff_minutes   =   floor($diff_seconds/60);
        $diff_seconds  -=   $diff_minutes * 60;
        if($type === 's'){
            return $diff_secs;
        } elseif($type === 'm'){
            return $diff_minutes;
        } elseif($type === 'h'){
            return $diff_hours;
        } elseif($type === 'd'){
            return $diff_days;
        } elseif($type === 'w'){
            return $diff_weeks;
        }
    }
    $select_query   =   'SELECT UNIX_TIMESTAMP(`date_time`) `date_time` FROM `table_name`';
    $select_result  =   mysql_query($select_query);
    if(is_resource($select_result) && mysql_num_rows($select_result) > 0){
        while($row = mysql_fetch_assoc($select_result)){
            echo    'Days difference is: '.timeDifference($row['date_time'], 'd').
                    ', and hours difference is: '.timeDifference($row['date_time'], 'h');
        }
    } else{
        echo 'No records found';
    }

?>

【讨论】:

  • Insert 看起来不错,但对减法查询几乎持怀疑态度。如何从数据库中检索时间或日期?这可能吗?
  • 我更新了我的回复,加入了时差功能。您可以通过查询SELECT UNIX_TIMESTAMP(date_time) date_time FROM table_name 从数据库中检索时间戳,现在检索到的字段date_time 将具有与time() 一样的时间戳。你可以在 PHP 端用它做任何事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多