我以Jan. 14,2014
,Apr. 20,2014
,Aug. 14,2014
等格式提供大量日期。这是从一组PDF文档中提取的。
我的问题
我使用java(通过PreparedStatement)将上述日期添加到mysql列,其中Column Datatype为Date。
....
st.SetDate(3,"Jan. 14,2014");
....
我使用ExecuteQuery添加了数据。
但是当程序执行MySql返回的错误消息时,说明日期格式与MySql列类型不兼容)Date ..
我的问题
如何将上述日期格式转换为mysql兼容日期格式?
答案 0 :(得分:3)
根据您当前发布的代码:
st.SetDate(3,"Jan. 14,2014");
这甚至都没有编译。您可以尝试从Date
获取新的String
对象(因为这是您要完成的操作),因此请使用SimpleDateFormat
:
SimpleDateFormat sdf = new SimpleDateFormat("MMM. dd,yyyy");
Date date = sdf.parse("Jan. 14,2014");
st.setDate(3, new java.sql.Date(date.getTime()));
//rest of your code...
与此类似,您可以使用java.util.Date
将时间或日期和时间分析为SimpleDateFormat
,然后使用{{java.sql.Time
将其转换为相应的班级java.sql.Timestamp
和date.getTime()
1}}。
另请注意,您可以自java.util.Date
PreparedStatement#getDate
getTime
后检索getTimestamp
java.sql.Date
对象java.sql.Time
以及java.sql.Timestamp
和java.util.Date
)的对象引用并{{1}}从{{1}}延伸。有关详细信息,请参阅此处:Date vs TimeStamp vs calendar?
答案 1 :(得分:2)
假设列类型支持Date
值,您可以使用SimpleDateFormat
将String
值解析为java.util.Date
并创建java.sql.Date
可以应用于setDate
方法......
SimpleDateFormat sdf = new SimpleDateFormat("MMM. dd,yyyy");
Date date = sdf.parse("Jan. 14,2014");
java.sql.Date sqlDate = new java.sql.Date(date.getTime());
检查SimpleDateFormat
了解更多详情
答案 2 :(得分:0)
一种可能的解决方案是在表中使用String数据类型而不是日期。
答案 3 :(得分:0)
使用SimpleDateFormat获取日期对象的日期字符串表示形式。 然后可以使用此日期对象来提供预准备语句的set date方法。
SimpleDateFormat sdf = new SimpleDateFormat(....)
java.util.Date date = sdf.parse(....);
preparedStmt.setDate(...., date);
答案 4 :(得分:0)
首先将java.util.Date转换为java.sql.Date,然后尝试设置Java.sql.Date
您可以使用此逻辑转换
如果您的日期是String,那么首先使用SimpleDateFormat或DateFormat将其转换为Java.util.Date类型
如果你想使用DateFormat,你也可以使用它: 但是这会根据运行的计算机的区域设置更改预期的日期格式。
如果您有特定的日期格式,则可以使用SimpleDateFormat:
Date d = new SimpleDateFormat("MMM. dd,yyyy").parse("Jan. 14,2014");
java.sql.Date sqlDate = new java.sql.Date(d.getTime());
答案 5 :(得分:0)
我真的不认为这些所有的东西都是必要的。你可以简单地使用这个非常简单的sql进程在mysql查询中插入日期:NOW()
,如INSERT INTO table_name(c1,c2,datecolumn) VALUES('value1','value2',NOW());
我觉得这简单得多:D