Java 日期格式错误

标签 java date datechooser

我正在使用 JDatechooser netbeans swing 插件进行桌面应用程序开发。默认情况下,其日期格式为 mm/dd/yy,但它不是数据库所需的格式。我需要将其转换为 yyyy-mm-dd 格式。我尝试使用 SimpleDateformat 类,它给了我以下错误:com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect date value: '8/29/11' for column 'registered_date' at row 1

谁能给我一个好的解决方案来正确地做到这一点

谢谢

最佳答案

您的数据库根本不需要特定的日期格式 - 您首先不应该将数据作为字符串插入。您应该使用准备好的语句并使用 setDate 。理想情况下,您应该执行尽可能少的字符串转换 - 从 JDateChooser 中获取值时不需要进行字符串转换,并且在插入数据库时​​也不需要进行字符串转换:

// Unfortunately you need to convert from java.util.Date to java.sql.Date
statement.setDate(1, new java.sql.Date(chooser.getDate().getTime()));

(请注意,您确实可能需要牢记时区,但这是另一回事......您可以调用 setDate 重载,它也需要日历.)

如果您一直通过构建包含值的完整 SQL 语句来插入(或查询)数据,您应该立即停止。您不仅会遇到此类转换问题,而且还会面临 SQL 注入(inject)攻击。始终使用准备好的语句并将任何参数指定为参数,而不是将它们包含在 SQL 中。

关于Java 日期格式错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7227593/

相关文章:

python - 如何垂直拆分数据框,在每个结果 DF 中有 N 列

java - 从自定义 listView 中的 Spinner 的 onItemSelected 执行代码

java - Hadoop conf 文件丢失

java - 在 Java 中为字节数组实现缓冲区

mysql - 如何针对时间戳执行查询?

java - 使用 JAVA 中的日期类处理时区更改

java - 当我的框架显示时,如何以编程方式打开 DateChooserPanel

apache-flex - Flex DateChooser - 周/周末的字体颜色差异

java - MapStruct:在合并父对象时调用子对象的合并