【问题标题】:Date difference in PHP to update the mysql dbPHP中更新mysql数据库的日期差异
【发布时间】:2018-01-15 13:59:01
【问题描述】:

我正在尝试在 mysql 字段中记录时差,当我在屏幕上尝试时,值是正确的。将字段提交到数据库后,该字段为空。 我哪里错了? 该字段在 mysql 中声明为时间戳,格式为 current_timestamp。 代码:

$strStart = date("Y-m-d H:i:s");
sleep(5);
$strEnd   = date("Y-m-d H:i:s");
$dteStart = new DateTime($strStart);
$dteEnd   = new DateTime($strEnd);
$dteDiff  = $dteStart->diff($dteEnd);
//$calc = $dteDiff->format("YYYY-%M-%D %H:%I:%S");
$calc = $dteDiff->format("%Y%Y-%M-%D %H:%I:%S");
echo "Difference: " . $calc;

我正在向数据库提交 $calc。

【问题讨论】:

  • 您没有在您显示的代码中将任何内容放入数据库中。而你echo的结果是什么,是你需要的吗?
  • 两个时间戳之间的差异不是日期/时间....日期/时间代表一个固定的时间点,而不是一段时间或一段时间。
  • 您在 db 表中插入数据的列是什么类型的?
  • 这是一个时间戳字段,我的更新代码是: $conn->query("INSERT INTO refTrackLogs (refTrackId, refPointId, name, floorId, refType, latitude, longitude, logtime) VALUES (' $data[id]', $bpoint, '$b[label]', '$b[floor]', 'calculated', '$b[latitude]', '$b[longitude]', '$calc' )");
  • 我可以将不同的日期和时间设为合法的日期和时间吗?

标签: php mysql


【解决方案1】:

由于 MySQL 日期的最小值为 '1000-01-01 00:00:00',因此您不能将此值('0000-00-00 00:00:05 5 秒)存储为日期/时间值....也不应该,因为它不是日期/时间.....日期/时间是一个固定的时间点,而不是一个间隔,它是两个日期/时间之间的时间段。日期间隔没有特定的数据类型。

我建议存储实际的日期/时间值而不是间隔,并且仅在需要时才计算间隔。 或者,如果您必须存储间隔本身,则将秒数存储为浮点数,而不是尝试将其强制转换为格式化的不适当数据类型;所以改为存储5.0 秒。

【讨论】:

    猜你喜欢
    • 2011-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多