如何将时间戳值更新/插入PHP / MySQL中的时间戳字段?

时间:2015-05-20 09:29:39

标签: php mysql laravel-4

我正在尝试构建小型API。我正在使用Laravel。

我有这个表例如:

CREATE TABLE `Incomes` (
    .......................................
    `comment` VARCHAR(255) NULL DEFAULT NULL,
    `dateInsert` TIMESTAMP NULL DEFAULT NULL,
    `dateUpdate` TIMESTAMP NULL DEFAULT NULL,
    `dateDelete` TIMESTAMP NULL DEFAULT NULL,
    PRIMARY KEY (`guid`),
    .......................................
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB;

我正在更新某一行dateUpdate字段:

update `Incomes` set `dateInsert` = '1432111937' where `guid` = 'lalvlldlv1laslf'

之后我将这些数据排成一行: enter image description here

我甚至没有时间戳,只有0000-00-00 00:00:00

为什么我会这样?

为什么关于PHP的问题?我正在使用Laravel来更新行。

我有这段代码,它生成上面的代码:

$jsonArray = $input->data;
foreach ($jsonArray as $item) {
    $item = (object)$item;
    $income = Income::find($item->guid);
    if($income) {
        $income->categoryId = $item->categoryId;
        $income->billId = $item->billId;
        $income->userId = $item->userId;
        $income->amount = $item->amount;
        $income->comment = $item->comment;
        $income->dateInsert = $item->dateInsert;
        $income->dateUpdate = $item->dateUpdate;
        $income->dateDelete = $item->dateDelete;
        $income->save();
    }
}

我将这个json解析为$jsonArray变量:

{
  "data": [
            {
                "guid": "lalvlldlv1laslf",
                "categoryId": "123e1cs",
                "billId": "12312",
                "userId": "214123",
                "amount": 200,
                "comment": null,
                "dateInsert": 1432111937,
                "dateUpdate": null,
                "dateDelete": null
            }
   ]
}

为什么我没有在行中获得正常的日期/正常时间戳?

1 个答案:

答案 0 :(得分:4)

Timestamp数据类型支持Y-m-d H-i-s格式的日期,因此失败,您需要转换为正确的格式。在mysql中,可以使用from_unixtime

完成
mysql> select from_unixtime('1432111937');
+-----------------------------+
| from_unixtime('1432111937') |
+-----------------------------+
| 2015-05-20 14:22:17         |
+-----------------------------+
1 row in set (0.05 sec)

因此更新命令将是

update `Incomes` 
set `dateInsert` = from_unixtime('1432111937')
where `guid` = 'lalvlldlv1laslf'