【问题标题】:MySQL Timestamp INSERT okay but sometimes failsMySQL Timestamp INSERT 可以,但有时会失败
【发布时间】:2016-05-09 10:34:47
【问题描述】:

所以我有一个bootstrap 3 表单,其中有一个clockpicker 和一个datepicker 插件。我通过 PHP 获取所有数据并尝试插入MySQL(目前在 XAMPP 中)。有时 INSERT 没问题,但有时 DB 中的一个或两个 Timestamp 字段留在 0000....

由于我像17/09/2016 一样显示日期,但我尝试在 MySQL 中像 2016-17-09 一样保存它,我必须将时钟选择器中的文本连接到日期选择器中的文本,我这样做:

    $startDate = $_POST['shiftStartDate'] . " " . $_POST['shiftStartTime'];
$startDateFormat = str_replace('/', '-', $startDate);
$date1 = date_create($startDateFormat);
$dateTime1 = date_format($date1, 'Y-d-m H:i:s');



$endDate = $_POST['shiftEndDate'] . " " . $_POST['shiftEndTime'];
$endDateFormat = str_replace('/', '-', $endDate);
$date2 = date_create($endDateFormat);
$dateTime2 = date_format($date2, 'Y-d-m H:i:s');

有什么想法吗?

解决方案: 格式化时,符合 MySQL 的 Y-m-d 要求,而不是 Y-d-m:

$dateTime2 = date_format($date2, 'Y-m-d H:i:s');

【问题讨论】:

  • 为什么要将其保存为 2016-17-19 而不是后者,究竟是什么?
  • @CaelanGrgurovic 你选的日期很有趣??哪个日历在
  • 很可能是因为它是有效的 MySQL 数据格式 (YYYY-MM-DD)。无论如何 - 当格式不是有效的日期格式时会发生这种情况 - 所以 MySQL 不知道如何处理它。尝试在插入之前回显$dateTime1 和$dateTime2,并确保它始终采用您期望的格式。另外 - 没有像 2016-17-09 这样的日期(日历中只有 12 个月 :))
  • @RiggsFolly ahaha *09
  • @CaelanGrgurovic 呵呵就是这个

标签: php mysql twitter-bootstrap datetime insert


【解决方案1】:

当您以 DATETIME 或 TIMESTAMP 列数据类型将其保存到数据库时,MYSQL 期望日期格式为 YYYY-MM-DD HH:MM:SS

您正在尝试将其保存为 YYYY-DD-MM。这仅在 DD 小于 12 时才有效,因此这可能解释了为什么它有时有效而有时无效

因此,请按照 MYSQL 的预期正确格式化您的日期,一切都会好起来的。

我还希望您在回读确实保存到数据库的日期时会得到一些奇怪的结果。

【讨论】:

  • 是的,这就是错误...我知道格式需要匹配,这就是我首先进行格式化的原因,但由于某种原因,我感到困惑并更改了 D 和 M 的顺序....谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-16
  • 2011-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-26
  • 2018-06-17
相关资源
最近更新 更多