最近我偶然发现了一个代码,其中使用简单日期格式的解析字符串将预准备语句中的字符串绑定到MySql中的DATETIME类型字段。为什么它不会抛出任何错误,理想情况下它应该绑定到日期类型。
MySql数据库中的字段类型为 DATETIME 。
ps.setString(index, stringDateObj);
为什么setString在这种情况下有效?它不应该是ps.setDate(index, dateObj);
吗?
答案 0 :(得分:2)
Set String适用于 Database 具有字符串格式转换模式的所有情况。对于数据库未知的格式,它将会中断。
在这种情况下,您还必须以不同的方式处理时区 - 也就是说,如果您的字符串格式不包含时区。
如果您可以更改代码,我建议您使用Java解析(您知道格式)并将java.sql.Date传递给PreparedStatement
。