【问题标题】:Seconds elapsed from mysql date entry and now从 mysql 日期输入到现在经过的秒数
【发布时间】:2012-11-02 14:48:30
【问题描述】:

我已经搜索过了,我有太多的尝试/错误但没有运气。所以这里是:

我想知道从 Mysql 条目中插入NOW() 的日期和date("Y.m.d H:i:s") 格式的当前日期以来已经过去了多少秒。这是我的php函数(取自用户发布@堆栈溢出)。

function multipost(){
global $dbh;
$ip= $_SERVER['REMOTE_ADDR']; 

$sql = "select * from  table where ip='$ipa' order by date_time desc limit 1";

foreach ($dbh->query($sql) as $row) {
    $timeFirst=$row['date_time'];
    $timeSecond=date("Y.m.d H:i:s");
    $differenceInSeconds = $timeSecond-$timeFirst;
    echo $differenceInSeconds;
}

我也尝试过strtotime($row['date_time'];),但没有运气。 有什么帮助吗? 提前致谢。

【问题讨论】:

  • 您的 MySQL 日期是 DATE 格式还是 DATE TIME 格式? (MM-DD-YYYY 或 MM-DD-YYYY HH:MM:SS)?
  • 试错并不总是好的。更好的是了解情况。您不能在 PHP 中将日期作为字符串减去。请先熟悉 PHP 的日期和时间处理:php.net/datetime - 如果您对字符串在 PHP 中的工作方式有疑问,请参阅 php.net/string
  • 是的忘了说mysql日期是2012-10-30 20:56:42格式YY:MM:DD H:i:s

标签: php mysql datetime


【解决方案1】:
function secDifference($date,$time){
    $dateVals = explode("-",$date);
    $timeUnix = 0;
    if($time == 0){
        $timeUnix = date("U",mktime(0,0,0,$dateVals[1],$dateVals[2],$dateVals[0]));
    }
    else{
        $tempVals = explode(" ",$dateVals[2]);
        $dateVals[2] = $tempVals[0];
        $timeVals = explode(":",$tempVals[1]);
        $timeUnix = date("U",mktime($timeVals[0],$timeVals[1],$timeVals[2],$dateVals[1],$dateVals[2],$dateVals[0]));
    }
    return (date("U")-$timeUnix);
}

复制这个函数。 要获得 DATE 和 NOW 的差异:

secDifference("12/03/1993");

获取日期时间和现在的差异:

secDifference("12/03/1993 14:54:32",1);

希望对你有帮助。

【讨论】:

  • 没有看到您对问题的最后评论。在这种情况下,请使用第二个函数调用。
  • 这个函数是akward。 耸耸肩 只有你可以用它“解决”一个问题并不意味着你应该使用它。
  • 嘿伙计,我只是想找到一种转换日期的方法。这很简单,而且很有效。
【解决方案2】:

你可以让mysql为你返回值:

select *, TIMESTAMPDIFF(SECOND, NOW(), date_time) AS time_diff from  table where ip='$ipa' order by date_time desc limit 1

【讨论】:

    【解决方案3】:

    如果您只想知道以秒为单位的时间差,您可以使用 MySQLs TIMESTAMPDIFF()。您的查询字符串如下所示:

    $sql = "SELECT *, TIMESTAMPDIFF(SECOND, date_time, NOW()) AS time_diff FROM table WHERE ip='$ipa' ORDER BY date_time DESC LIMIT 1";
    

    注意TIMESTAMPDIFF 的返回值存储为“time_diff”。您的结果将添加“time_diff”列。

    有关更多文档,请参阅this page

    【讨论】:

      猜你喜欢
      • 2018-11-19
      • 1970-01-01
      • 1970-01-01
      • 2018-05-06
      • 1970-01-01
      • 2016-11-04
      • 2016-05-30
      • 1970-01-01
      • 2019-10-31
      相关资源
      最近更新 更多