我有一个 Mysql 数据库,我在其中保存客户订单的日期。
日期由 php 函数生成date('Y-m-d')
。我的数据库中有两条记录有值'0000-00-00'
。一个是由澳大利亚的客户创建的,另一个是由意大利的客户创建的。其他5000个订单都可以。
我的问题是如何生成这样的日期?可能与个别浏览器设置有关吗?
感谢帮助
5 回答
我能找到的唯一原因是您的客户输入了不正确的日期格式,或者他输入了一个空字符串。请记住 Mysql 中的日期格式是 yyyy-mm-dd。
我注意到我遇到了同样的问题,结果只是我在插入 $date 变量时没有在我的 $date 变量周围加上单引号,因此它插入了一个显示为 0000-00- 的空值或空白值00 在数据库中。一旦我在我的插入语句中输入'$date'而不是$date ,该值就会按预期出现。
这意味着 MySQL 传递了一个无效值,其中根本没有值。检查您的代码以确保它始终具有该日期的有效值。
检查此帖子默认日期 '0000-00-00 00:00:00' 或 null。它会回答你的问题。客户端代码中的年、月和日变量可能尚未初始化。
编辑
如果不是这种情况,那么您似乎recently changed the Date-related column
在数据库中从VARCHAR or TEXT
to DATE
。
MySql changes
NULL
在这种情况下,所有值都为'0000-00-00'
。因此,如果某个时间过去,日期不是 UI 上的必填字段,并且如果它作为 NULL 传递,那么上面的事情就发生了。
可能是您有纯粹的编程或过时的mysql
功能。例如:CURDATE() + 5
将在数据库中正确插入日期,但是如果用户在2016-12-28
数据库中执行此操作,则会显示0000-00-00
. 如果当前日期是 2016-12-20,它将正常工作。绝对正确的功能是CURDATE() + INTERVAL 5 DAY
. 你写在一月初,所以也许你有类似的问题。