Как сохранить мою дату и время как дату в моей базе данных

Цель: я хочу сохранить некоторые данные из API в свою базу данных, дата в API выглядит так:

"utcDate": "2018-10-28T13:30:00Z"

Я пытался использовать дату и время в своих миграциях, но получаю сообщения об ошибках, что это неправильный формат.

$table->datetime('date');

Моя ошибка:

PDOException::("SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value: '2018-10-20T11:30:00Z' for column 'date' at row 1")

Любые другие способы сохранить эту дату как дату в моей базе данных?


person Dax    schedule 28.10.2018    source источник
comment
или дубликат stackoverflow.com/questions/19357284/   -  person user3783243    schedule 28.10.2018
comment
Это НЕ обман — Laravel/MySQL не требует преобразования моделей Eloquent в временные метки Unix. Eloquent автоматически форматирует значение для базы данных при предоставлении объекта DateTime, поэтому в первую очередь нет необходимости преобразовывать что-либо, кроме получения строки даты в объект DateTime.   -  person John Ellmore    schedule 08.01.2019


Ответы (2)


Вам нужно преобразовать его в date форму datetime, используя DateTime, прежде чем вставлять значение. Это вызывает ошибку, потому что $table->datetime('date'); не работает для вас, чтобы преобразовать его в формат date. Также вы можете использовать MYSQL DATE() чтобы преобразовать его в date из datetime.

<?php

$datetime = "2018-10-28T13:30:00Z";
$date = new DateTime($datetime);
echo $date->format('Y-m-d');
?>

ИЛИ

<?php
$datetime = "2018-10-28T13:30:00Z";
echo date("Y-m-d", strtotime($datetime));
?>
person Always Sunny    schedule 28.10.2018

Я думаю, что этот запрос легко сделать, используя метод DATE() из MySQL.

    INSERT INTO `test`
    (`createdAt`)
    VALUES
    (DATE('2018-01-01 07:00:01'));
person giapnh    schedule 28.10.2018