我正在开发一个PHP - MySQL应用程序,在该应用程序中,我需要在date列中将所有存储的非日期值转换为空,并且在今后避免将0000-00-00值插入到column.In短日期列时,DATE列应该只有有效的日期值或NULL.Suppose,我有一个表,其列类型为 DATE ,默认值为空.When,我试图用非日期值将数据插入到这些列中,如果将日期值设置为空字符串或非有效日期字符串,则列将被设置为'0000-00-00'.So,而不是将值设置为NULL,我不希望插入值'0000-00-00',而是使用MySQLi包装器类库将MySQLi应用程序与MySQL database.The链接连接。
https://github.com/ThingEngineer/PHP-MySQLi-Database-Class
我很难在应用程序中的每个insert/update操作中检查日期列值确实是日期值,如果不是,将列的列或设置值取消为NULL.So,我试图在库使用的insert/update命令(所有insert/update命令都通过这个库)的位置执行一些操作,.But还有一些关于日期类型(可能必须从信息表中获取表元信息)的预定义信息,以便进行比较和相应的操作。
我已经在JDBC库中找到了一些类似的功能,比如在线程中(请参见5 in的答案)。
https://dba.stackexchange.com/questions/139896/null-instead-0000-00-00-000000-in-mysql-5-7
那么,在JDBC驱动程序中是否有类似于zeroDateTimeBehaviour = convertTONull选项的东西,我们可以在PHP连接接口中使用,或者在DB级别上使用一些转换选项。
我正在使用PHP5.6和MySQL版本5.6。
编辑-许多人指出这个问题已经有一个答案在
但是,所有的答案都不会导致正确的解决方案(至少在我的例子中不是这样),因为许多答案解释了如何在每个插入/更新级别解决问题,而不是当应用程序已经有了大量的插入/更新命令时,并且我希望尽可能地修改当前的应用程序。
JDBC驱动程序中的zeroDateTimeBehaviour = convertTONull选项
发布于 2019-01-17 09:00:00
尝试设置SET GLOBAL sql_mode = '';
如果这对你没有帮助,我建议你在ALLOW_INVALID_DATES SQL模式的完整列表上读一读。希望这能解决你的问题。
https://stackoverflow.com/questions/54231519
复制相似问题