MySQL存储日期错误地存储为“0000-00-00”

时间:2013-08-29 14:53:06

标签: php mysql

这是我的HTML代码:

        <p>Leave duration:<input type = "date" name="leave_start"/>to
                          <input type = "date" name="leave_end"/></p>

下面是我的SQL代码:

$sql = ("INSERT INTO  `leave` (  `Leave_Start` ,  `Leave_End` ) 
                    VALUES({$_POST["leave_start"]},{$_POST["leave_end"]}')");

1 个答案:

答案 0 :(得分:3)

忽略代码中令人讨厌的SQL injection attack漏洞,在数据库中执行与日期相关的操作时,必须使用MySQL的本机日期字符串格式,例如:日期+时间yyyy-mm-ddyyyy-mm-dd hh:mm:ss。如果您尝试插入其他内容,MySQL将 TRY 将其解释为日期,但不会尝试太多。任何无法正确解释的日期都会显示为0000-00-00版本。

这意味着

... VALUES ('2013-08-01', '2013-08-31');

会起作用,但类似

... VALUES ('Aug 01/2013', '31st August 2013')

完全失败。