【问题标题】:MySQL - save JSON timestampMySQL - 保存 JSON 时间戳
【发布时间】:2015-11-02 20:06:41
【问题描述】:

我有一个由 JSON 给出的时间戳。我想将其推送到我的数据库(MySQL)中。有一行叫做“epoch”,它是一个日期时间类型。

通过以下代码打印时间戳会得到正确的结果。

$epoch = date('d.m.Y H:i:s', $this->date);

echo "Timestamp: " . $this->date . " - Date: " . $epoch . "\n";

时间戳:1446746400 - 日期:05.11.2015 19:00:00

$sql = "REPLACE INTO Forecast (epoch) VALUES ('" . $this->date . "')";

结果是我的数据库中的 0000-00-00 00:00:00 日期值...

谁能解释一下,如何将此时间戳正确传递到 MySQL 中?

【问题讨论】:

  • 首先使用 mysql 日期/时间格式:dev.mysql.com/doc/refman/5.7/en/datetime.html。没有“json时间戳”之类的东西。除了原始数字/字符串/数组/对象之外,json 没有真正的数据类型。
  • mySQL中有一个TIMESTAMP数据类型,你的epoch列的数据类型是什么? SELECT column_name, data_type FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'Forecast'

标签: php mysql json datetime timestamp


【解决方案1】:

试试这个:

$epoch_date = $epoch->format('Y-m-d H:i:s');
$query = "update forecast set epoch = '$epoch_date'";

【讨论】:

    【解决方案2】:

    mysql 中的datetime 格式不是 php 中的时间戳。您需要存储一个类似于 your$epoch 字符串的字符串:

    date('Y-m-d H:i:s', $this->date)
    

    会很好。

    【讨论】:

      【解决方案3】:

      MySQL 只接受 YYYY-MM-DD 格式的日期。除此格式之外的任何内容都将被丢弃,并插入字段的默认值作为结果。因此,为了存储正确的日期,您需要将其转换为 Mysql 的本机日期时间格式。您可以为此使用 Mysql date_format() 或 php date 函数。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-12-28
        • 2021-01-04
        • 2011-08-03
        • 2013-02-18
        • 2012-05-21
        • 2015-11-30
        • 1970-01-01
        • 2011-09-25
        相关资源
        最近更新 更多