使用php将日期时间保存到mysql

时间:2016-01-03 08:10:29

标签: php mysql datetime

hellow, 即时通过datetimebox easyui创建表单,如下所示:

<input id="dt" name ="po_receive" class="easyui-datetimebox" name="date_time_pick" data-options="required:true,showSeconds:false" style="width:150px">

我想用datetime类型数据库将它保存到mysql,但结果是00:00:00。 javascript easyui-datetimebox工作得很好。

这是我的保存数据代码:

<?php
$po_receive = $_REQUEST['po_receive'];

$sql = "insert into db(po_receive) values ('$po_receive')";
$result = @mysql_query($sql);
if ($result){
    echo json_encode(array(
        'id' => mysql_insert_id(),
        'po_receive' => $po_receive
    ));
} else {
    echo json_encode(array('errorMsg'=>'Some errors occured.'));
}

?>

但结果是00:00:00,是因为datetimebox值格式是“01/03/2016 07:53:09”?示例datetimebox:datetimebox

4 个答案:

答案 0 :(得分:1)

您需要在插入数据库之前重新格式化日期

$dc=date_create($po_receive);
$formated_date=date_format($dc,"Y-m-d"); //"Y-m-d" is the date format
$sql = "insert into db(po_receive) values ('$formated_date')";

请参阅此链接,了解不同类型的日期格式 http://php.net/manual/en/function.date.php

答案 1 :(得分:1)

好吧,tq有人说它的工作。我需要把功能日期(&#34; Y-m-d H:i:s&#34;,strtotime())

Tq all。

答案 2 :(得分:0)

  

结果是00:00:00,是因为datetimebox的值格式是“01/03/2016 07:53:09”

那是因为您尝试以不正确的格式插入日期时间。 MySQL的DATETIME采用以下格式YYYY-MM-DD HH:MM:SS

以下是参考资料:

使用createFromFormat()类的getTimestamp()DateTime方法将您的时间转换为unix时间戳,然后使用strftime()将unix时间戳转换为MySQL格式。

以下是参考资料:

所以你的代码应该是这样的:

<?php

    $po_receive = $_REQUEST['po_receive'];
    $unixdatetime = DateTime::createFromFormat('d/m/Y H:i:s', $po_receive)->getTimestamp();
    $po_receive = strftime("%Y-%m-%d %H:%M:%S",$unixdatetime);

    $sql = "insert into db(po_receive) values ('$po_receive')";
    $result = @mysql_query($sql);
    if ($result){
        echo json_encode(array(
            'id' => mysql_insert_id(),
            'po_receive' => $po_receive
        ));
    } else {
        echo json_encode(array('errorMsg'=>'Some errors occured.'));
    }

?>

旁注:请不要使用mysql_数据库扩展,从PHP 5.5开始不推荐使用它们,并在PHP 7.0中完全删除它们。请改用mysqliPDO扩展程序。这是why you shouldn't use mysql_ functions

答案 3 :(得分:0)

您需要根据MYSQL日期时间标准转换输入日期。

<强>替换

$po_receive = $_REQUEST['po_receive']; 

。通过

$po_receive = date ("Y-m-d H:i:s",strtotime($_REQUEST['po_receive']));