sql db的日期失败

时间:2014-07-11 11:16:19

标签: php mysql sql date

我有以下datepciker:

<script>
    $(function() {
        $( "#datepicker" ).datepicker({
            dateFormat: 'mm-dd-YYYY'
        }).val(getTodaysDate(0)); // For current date

    });

  function getTodaysDate (val) {
    var t = new Date, day, month, year = t.getFullYear();
    if (t.getDate() < 10) {
        day = "0" + t.getDate();
    }
    else {
        day = t.getDate();
    }
    if ((t.getMonth() + 1) < 10) {
        month = "0" + (t.getMonth() + 1 - val);
    }
    else {
        month = t.getMonth() + 1 - val;
    }

    return (day + '/' + month + '/' + year);
   }
</script>

输入:

<input type="text" id="datepicker" name="datepicker">

在这里,我试图将日期插入我的MySQL数据库。没有错误消息,insert命令运行正常,但我的db中的日期字段为空/ NULL。

$date = $_POST['datepicker'];
$sql="INSERT INTO table (dt) VALUES ('$date')";

这是一些价值类型问题还是什么?我的数据库中的dt列是DATE

*更新 @Dwza: 所以我修改了脚本:

dateFormat: 'YYYY-mm-dd'

return (year + '-' + month + '-' + day);

您提到的链接建议的INSERT

$parts = explode('-', $_POST['datepicker']);
$date  = "$parts[2]-$parts[0]-$parts[1]";
$sql="INSERT INTO transfer (dt) VALUES ('$date')";

仍然没有。

**解决:

$date  = "$parts[0]-$parts[1]-$parts[2]";

2 个答案:

答案 0 :(得分:2)

如果您尝试将字符串(日期)插入DATE类型的列中,则需要一个有效的日期格式字符串。

11/07/2014似乎是德国日期格式:D

检查 this answere

<强>引用:

  

MySQL以这些格式识别DATE值:

     
      
  • 作为'YYYY-MM-DD''YY-MM-DD'格式的字符串。允许使用“宽松”语法:任何标点符号都可以用作日期部分之间的分隔符。例如,'2012-12-31''2012/12/31''2012^12^31''2012@12@31'是等效的。

  •   
  • 作为没有'YYYYMMDD''YYMMDD'格式的分隔符的字符串,前提是该字符串作为日期有意义。例如,'20070523''070523'被解释为'2007-05-23',但'071332'是非法的(它具有无意义的月和日部分)并变为'0000-00-00'

  •   
  • 作为YYYYMMDDYYMMDD格式的数字,前提是该数字作为日期有意义。例如,19830905830905被解释为'1983-09-05'

  •   

这应该可以解决你的问题:)

更改此

return (day + '/' + month + '/' + year);

到这个

return (month + '/' + day + '/' + year);

return (year + '-' + month + '-' + day);

编辑Q:

如上所述,更改后退后,您不必爆炸数据,它已经是有效的日期格式。

你可以像开始时一样离开,而不是使用爆炸。

答案 1 :(得分:1)

您必须在输入字段中指定名称datepicker,如下所示:

 <input type="text" id="datepicker" name="datepicker">