2015-11-02 189 views
0

我有一个由JSON给出的时间戳。我想把它推入我的数据库(MySQL)。有一个叫做“epoch”的行,它是一个日期时间类型。MySQL - 保存JSON时间戳

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

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

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

时间戳:1446746400 - 日期:2015年5月11日19:00:00

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

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

任何人都可以解释我,如何正确地将这个时间戳传递到MySQL?

+0

开始使用MySQL的日期/时间格式:http://dev.mysql.com/doc/refman/5.7/en/datetime.html。没有像“json timestamp”这样的东西。除了基本的数字/字符串/数组/对象之外,json没有真正的数据类型。 –

+0

mySQL中有一个TIMESTAMP数据类型,您的时代列的数据类型是什么? SELECT column_name,data_type FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME ='Forecast' –

回答

0

mysql中的datetime格式不像php中的时间戳。你需要存储一个字符串,看起来类似于你的$epoch字符串:

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

会正常工作。

0

MySQL只接受YYYY-MM-DD格式的日期。除此格式之外的任何内容都将被简单地丢弃,并且该字段的默认值将作为结果插入。所以为了存储正确的日期,你需要将它转换为Mysql的本地日期时间格式。你可以使用Mysql的date_format()或php日期函数来做到这一点。

1

尝试这样的:

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