繁体   English   中英

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

[英]How to convert a date format to mysql date format?

我有一堆日期,例如Jan. 14,2014Jan. 14,2014 Apr. 20,2014Jan. 14,2014Apr. 20,2014 Jan. 14,2014 Apr. 20,2014Aug. 14,2014 Apr. 20,2014 Aug. 14,2014等。 从一组PDF文档中提取的。

我的问题
我使用java(通过PreparedStatement)将上述日期添加到Column数据类型为Date的mysql列中。

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

我使用ExecuteQuery添加了数据。

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

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

通过您当前发布的代码:

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

这甚至不编译。 您可以尝试从String获取新的Date对象(因为这是您要完成的工作),因此可以使用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...

与此类似,您可以使用SimpleDateFormat将时间或日期和时间解析为java.util.Date ,然后使用date.getTime()将其转换为相应的类java.sql.Timejava.sql.Timestamp

还要注意,由于java.sql.Datejava.sql.Timejava.sql.Timestampjava.util.Date扩展的,因此您可能会检索对PreparedStatement#getDate (以及getTimegetTimestamp )的java.util.Date对象引用。 。 有关更多信息,请参见此处: 日期vs时间戳vs日历?

假设列类型支持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以获得更多详细信息

一种可能的解决方案是在表中使用String数据类型而不是日期。

使用SimpleDateFormat可以将日期的字符串表示形式转换为Date对象。 然后可以使用该日期对象来提供已准备好的语句的设置日期方法。

SimpleDateFormat sdf = new SimpleDateFormat(....)
java.util.Date date = sdf.parse(....);

preparedStmt.setDate(...., date);

首先将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());

我真的不认为所有这些Java东西都是必要的。 您可以简单地使用这个非常简单的sql进程来插入日期:像INSERT INTO table_name(c1,c2,datecolumn) VALUES('value1','value2',NOW());这样的mysql查询中的NOW() INSERT INTO table_name(c1,c2,datecolumn) VALUES('value1','value2',NOW()); 我认为这要简单得多:D

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM