在 JDBC 中处理“0000-00-00 00:00:00”DATETIME 值
使用以下命令从 MySQL 数据库检索 DATETIME 值时JDBC,如果该值设置为准空值,则可能会遇到异常“0000-00-00 00:00:00”。当尝试使用 resultset.getString("add_date") 以字符串形式检索值时,即使目的是获取原始字符串,也会出现此问题。
替代解决方案
此问题的解决方法是使用以下 SQL 查询:
SELECT CAST(add_date AS CHAR) as add_date
此查询强制转换DATETIME 值转换为 CHAR,确保将其作为字符串检索。但是,由于其额外的处理要求,它被认为是不太理想的解决方案。
JDBC URL 配置
另一种方法是直接在数据源中配置 JDBC URL配置:
jdbc:mysql://yourserver:3306/yourdatabase?zeroDateTimeBehavior=convertToNull
通过将zeroDateTimeBehavior属性设置为convertToNull,可以指示JDBC驱动程序进行转换将全零 DATETIME 值设置为 NULL,而不是抛出异常。
源和其他选项
官方 MySQL 手册提供了有关如何处理全零的更多信息DATETIME 值位于Connector/J:
https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-reference-configuration-properties.html#property_zeroDateTimeBehavior
根据根据手册,Connector/J 版本 3.0.x 默认将全零 DATETIME 值转换为 NULL。然而,在 3.1 版本中,默认行为更改为抛出异常。 ZeroDateTimeBehavior 属性允许您通过指定以下选项之一来自定义此行为:
以上是如何在 JDBC 中处理'0000-00-00 00:00:00”DATETIME 值?的详细内容。更多信息请关注PHP中文网其他相关文章!