它没有在数据库中插入日期

时间:2012-03-30 22:27:22

标签: php mysql

  

可能重复:
  php/Mysql query with inserting date fails

我在下面有一个日期选择代码:

         $(function() {
        $( "#datepicker" ).datepicker({minDate: 0, 
                            dateFormat: "dd-mm-yy"
});
});

正如您所看到的,在datepicker文本框中显示日期的格式('dateChosen')是'dd-mm-yy',就像这样(20-05-2012)。

但是当我尝试在“SessionDate”字段中插入日期,而不是在数据库中显示“2012-05-20”时,它会一直显示“0000-00-00”。为什么要这样做?

我想要的是文本框格式保持不变但是当日期插入到SessionDate表中时,我希望它插入为'2012-05-20'而不是'0000-00-00'。< / p>

下面是插入的代码($ _POST ['dateChosen']是发布日期的post方法):

$sql="INSERT INTO Session (SessionDate)
VALUES
(' ". mysql_real_escape_string( $_POST['dateChosen'] ) . "'
)";

mysql_query($sql);

2 个答案:

答案 0 :(得分:2)

您的日期格式为dd-mm-yy,因此日期的类型为:31-03-12而不是31-03-2012。 MySQL无法在其dateformat语法中接受该值。在插入查询中尝试此操作:

$sql = "INSERT INTO Session (SessionDate) VALUES(' " .
       mysql_real_escape_string( date("Y-m-d", strtotime( $_POST['dateChosen'] ) ) ) . "')";
mysql_query($sql);

答案 1 :(得分:0)

或者你可以使用MySQL的STR_TO_DATE() -

$date = mysql_real_escape_string($_POST['dateChosen']);
$sql = "INSERT INTO Session (SessionDate) VALUES(STR_TO_DATE('$date', '%d-%m-%y'))";
mysql_query($sql);