我在MySQL中有一个类型为date的字段。当我尝试使用以下查询在PHP中插入此字段中的任何日期时,它会在该字段中存储0000-00-00。
例如:
UPDATE test SET dob=2000-09-20 WHERE id=3
答案 0 :(得分:6)
请引用日期。
UPDATE test SET dob='2000-09-20' WHERE id=3
在您的查询中,... 2000-09-20 ...
将被解释为数学表达式。结果是一个数字,1971年。在日期时间字段中,一个数字将被零填充为6,8,12或14位数字,因此1971将变为001971.这个数字然后被解释为YYMMDD格式,所以它意味着“00 00月19日71”,这是无效的。因此存储了特殊值0000-00-00
。
答案 1 :(得分:3)
通常,您可以使用'2000-09-20'
作为要插入的值。你的系统如何区分你所拥有的和整数(非日期)值1971,这是你从2000减去9和20得到的?
UPDATE test SET dob = '2000-09-20' WHERE id = 3
有关详细信息,请参阅here。