我正在使用JDatechooser netbeans swing插件进行桌面应用程序开发。默认情况下,其dateformat为mm / dd / yy,但不是db所需的格式。我需要将其转换为yyyy-mm-dd格式。我尝试使用SimpleDateformat类,它给了我以下错误:com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect date value: '8/29/11' for column 'registered_date' at row 1
任何人都可以给我一个很好的解决方案来正确地做到这一点
由于
答案 0 :(得分:6)
您的数据库根本不需要特定的日期格式 - 您不应该首先将数据作为字符串插入。您应该使用准备好的声明并使用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
重载也需要日历。)< / p>
如果您通过构建包含值的完整SQL语句插入(或查询)数据,则应立即停止 。您不仅会遇到这种转换问题,而且还会遇到SQL注入攻击。始终使用预准备语句并将任何参数指定为参数,而不是将它们包含在SQL中。
答案 1 :(得分:1)
试试这个:
Date date = ...
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
String date_for_mysql = df.format(date);
在此处查看相关的SO答案:
How to parse a date?
Java date formatting?
Converting MySql DateTime type into something more friendly
how to store java date type to mysql date type?
Convert Date into MYSQL Date Format
How to convert Date in String to Sql date?
How to set Current date to MySQL date column from Java?