如何将日期格式转换为mysql日期格式?

时间:2014-02-02 08:09:34

标签: java mysql sql date date-format

我以Jan. 14,2014Apr. 20,2014Aug. 14,2014等格式提供大量日期。这是从一组PDF文档中提取的。

我的问题
我使用java(通过PreparedStatement)将上述日期添加到mysql列,其中Column Datatype为Date。

....
st.SetDate(3,"Jan. 14,2014");
....

我使用ExecuteQuery添加了数据。

但是当程序执行MySql返回的错误消息时,说明日期格式与MySql列类型不兼容)Date ..

我的问题
如何将上述日期格式转换为mysql兼容日期格式?

6 个答案:

答案 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.Timestampdate.getTime() 1}}。

另请注意,您可以自java.util.Date PreparedStatement#getDate getTime后检索getTimestamp java.sql.Date对象java.sql.Time以及java.sql.Timestampjava.util.Date)的对象引用并{{1}}从{{1}}延伸。有关详细信息,请参阅此处:Date vs TimeStamp vs calendar?

答案 1 :(得分:2)

假设列类型支持Date值,您可以使用SimpleDateFormatString值解析为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