【问题标题】:Inserting datetime value including milliseconds into mysql database from PHP从PHP将包括毫秒的日期时间值插入mysql数据库
【发布时间】:2018-05-23 15:38:00
【问题描述】:

我正在使用 PHP laravel 框架开发一个 Web 应用程序。我现在正在做的是我试图插入日期时间值,包括用户给出的毫秒数。但它抛出了无效的日期时间格式错误。

这是我的代码

$image = new Image;
$image->date_taken = date('Y-m-d H:i:s u',strtotime($date_and_time." ".$milliseconds)); //milliseconds is something like 0, 435, 455656
$image->save();

当我运行代码时,它给了我这个错误。

SQLSTATE[22007]: Invalid datetime format: 7 ERROR: invalid input syntax for type timestamp: "1970-01-01 00:00:00 000000" (SQL: insert into "images" ("event_id", "user_id", "visibility", "s3_path", "file_hash", "date_taken", "taken_at_tag", "updated_at", "created_at") values (1, 101, 1, RWGV7HMW/iljimae.ic@gmail.com/wPxi5AkW0VzUfc0e5Xu4xQw27sdVXttAqMWUU1Cx.jpeg, ca5544c371b7c6a0eedc03b04e44f36f, 1970-01-01 00:00:00 000000, 124216-097, 2018-05-23 15:32:02, 2018-05-23 15:32:02) returning "id")

如何格式化包含毫秒的日期时间并插入 MySQL 数据库?

【问题讨论】:

  • 这行代码中的'u'代表什么$image->date_taken = date('Y-m-d H:i:s u'
  • 毫秒。
  • u 是微秒,v 是毫秒。 php.net/manual/en/function.date.php
  • 我认为正确的格式是Y-m-d H:i:s.uY-m-d H:i:s.v。注意秒和微/毫秒之间的时间段。
  • 是的。你说的对。最后一条评论对我有帮助。

标签: php mysql datetime


【解决方案1】:

您在创建表格时使用了什么数据类型?

例如: DATE - 格式 YYYY-MM-DD。

DATETIME - 格式:YYYY-MM-DD HH:MI:SS。

SMALLDATETIME - 格式:YYYY-MM-DD HH:MI:SS。

TIMESTAMP - 格式:一个唯一的数字。

来源:https://www.w3schools.com/sql/sql_dates.asp

【讨论】:

  • 对不起。实际上我使用了时间戳。我应该使用哪种格式?
  • 真的取决于它的用途。时间戳更像是一种记录。
  • 现在如何插入毫秒?
  • 您必须修改现有表中的列或重新创建表。时间戳格式:dev.mysql.com/doc/refman/8.0/en/datetime.html
猜你喜欢
  • 2016-09-12
  • 2019-12-07
  • 2016-10-31
  • 1970-01-01
  • 2013-04-27
  • 1970-01-01
  • 1970-01-01
  • 2017-07-08
  • 2018-12-25
相关资源
最近更新 更多