[英]How to convert a date format to mysql date format?
我有一堆日期,例如Jan. 14,2014
年Jan. 14,2014
Apr. 20,2014
, Jan. 14,2014
年Apr. 20,2014
Jan. 14,2014
Apr. 20,2014
年Aug. 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.Time
和java.sql.Timestamp
。
还要注意,由于java.sql.Date
, java.sql.Time
和java.sql.Timestamp
从java.util.Date
扩展的,因此您可能会检索对PreparedStatement#getDate
(以及getTime
和getTimestamp
)的java.util.Date
对象引用。 。 有关更多信息,请参见此处: 日期vs时间戳vs日历?
假设列类型支持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
以获得更多详细信息
一种可能的解决方案是在表中使用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.