我有以下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]";
答案 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'
。作为
YYYYMMDD
或YYMMDD
格式的数字,前提是该数字作为日期有意义。例如,19830905
和830905
被解释为'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">