【发布时间】:2011-03-29 07:57:45
【问题描述】:
我在 MySQL 中有一个日期类型的字段。当我尝试使用以下查询使用 PHP 在此字段中插入任何日期时,它会在该字段中存储 0000-00-00。
例如:
UPDATE test SET dob=2000-09-20 WHERE id=3
【问题讨论】:
-
2000-09-20 = 1971 这不是一个有效值 ;)
我在 MySQL 中有一个日期类型的字段。当我尝试使用以下查询使用 PHP 在此字段中插入任何日期时,它会在该字段中存储 0000-00-00。
例如:
UPDATE test SET dob=2000-09-20 WHERE id=3
【问题讨论】:
只需引用日期即可。
UPDATE test SET dob='2000-09-20' WHERE id=3
在您的查询中,... 2000-09-20 ... 将被解释为数学表达式。结果是一个数字,1971。在日期时间字段中,数字将被零填充为 6、8、12 或 14 位数字,因此 1971 将变为 001971。然后该数字被解释为 YYMMDD 格式,因此它意味着“年 00 月 19 日 71”,无效。所以存储了特殊值0000-00-00。
【讨论】:
通常,您会使用'2000-09-20' 作为要插入的值。您的系统如何区分您拥有的值和整数(非日期)值 1971,即从 2000 中减去 9 和 20 得到的值?
UPDATE test SET dob = '2000-09-20' WHERE id = 3
更多详情请见here。
【讨论】: