0

我有一个带有 JS datepicker 的 PHP 日期和时间,它将所有字符串以这种格式“19.08.2012 @ 20:18”保存在一个名为 $date 的变量中。

如果我将此变量直接放在查询中,它会在数据库中写入“0000-00-00 00:00:00”。目前我脑子里有个大黑洞,所以需要帮助。

如何在数据库中写入正确的选定日期和时间?


对不起,我认为不是那么重要,这是代码。

索引.php

<script type="text/javascript">
$(function() {
    $("#date").datetimepicker({
        dateFormat:'dd.mm.yy',
        separator: ' @ '
    });
});
</script>

<form action="setting.php" method="post">
 <table>
 <tr>
  <td><label for="date">Date:</label></td>
  <td><input type="text" id="date" name="date"/></td>
 </tr>
</table>
<input type="submit" name="submit" />

设置.php

if(isset($_POST['save_autoresp'])) {
    create($_POST['date']);
    header("Location: admin.php");
    exit();
} else {
    header("Location: index.php");
    exit();
}

函数.php

.......
.......
// Write the fields to the table
$query_create = mysqli_query($link, "INSERT INTO table VALUES (null, '$id', '$date')") or die ('Could not connect: ' . mysqli_error($link));
.......
.......

MySQL 数据库中的日期字段是“日期时间”。

4

4 回答 4

7

您收到的日期是 MySQL 无法识别的格式。您必须首先将其转换为可接受的日期和时间文字,然后才能将其传递给 INSERT。

这种转换可以通过两种方式完成:

  • 您可以配置您的 JS 日期时间选择器,使其返回日期为“YYYY-MM-DD HH:MM:SS”。
  • 您可以在 PHP 中进行上述转换。

无论您选择哪个,在保存到数据库时,请坚持日期的年-月-日格式,这样您就不会疯狂地找出为什么“08/02”被认为是 8 月 2 日而不是2 月 8 日。

于 2012-08-19T18:24:50.923 回答
1

您需要转换变量以指定 MySQL 的正确格式,即 YYYY-MM-DD HH:NN:SS。就这样。通过向它抛出一些子字符串函数来完成。

于 2012-08-19T18:25:02.197 回答
1

如果直接在查询中写入字符串“19.08.2012 @ 20:18”,MySQL 根本无法解析它。您必须先转换它,具体取决于字段(列)是 INT、TIMESTAMP 还是 DATETIME。

MySQL自带一些方便的日期计算功能,所以你应该坚持DATETIME。

在 PHP 中,您可以使用gmmktime()和转换它gmdate()。为了让您自己的生活更轻松,请确保 MySQL 服务器以 UTC 运行,并且您的应用程序在将日期插入 MySQL 之前将其转换为 UTC。

获取输出日期时,只需使用正确的date_default_timezone_set().

于 2012-08-19T18:29:15.467 回答
1

您需要将日期转换为 mysql 日期格式,您可以使用 explode() 函数删除“。” 首先从您的日期签名,然后使用 mktime() 函数制作 mysql 日期格式

$date = exolode('.', $_POST['date']);
$unixtime= mktime(0, 0, 0, $date[1], $date[0], $date[2]);
$date1 = date("H-m-d H:i:s", $unixtime);
$final_Date = strtotime($date1);
于 2014-01-16T06:55:23.990 回答