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

Java 如何将日期格式转换为mysql日期格式?,java,mysql,sql,date,date-format,Java,Mysql,Sql,Date,Date Format,我有一大堆日期,格式像2014年1月14日、2014年4月20日、2014年8月14日等等,。从一组PDF文档中提取 我的问题 我使用java by PreparedStatement将上述日期添加到mysql列中,列数据类型为Date .... st.SetDate(3,"Jan. 14,2014"); .... 我使用ExecuteQuery添加了数据 但当程序执行MySql返回的错误消息时,指出日期格式与MySql列类型日期不兼容 我的问题 如何将上述日期格式转换为mysql兼容的日期格

我有一大堆日期,格式像2014年1月14日、2014年4月20日、2014年8月14日等等,。从一组PDF文档中提取

我的问题 我使用java by PreparedStatement将上述日期添加到mysql列中,列数据类型为Date

....
st.SetDate(3,"Jan. 14,2014");
....
我使用ExecuteQuery添加了数据

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

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

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

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

用于将日期的字符串表示形式转换为日期对象。 然后,可以使用此日期对象为准备语句的set date方法提供数据

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

preparedStmt.setDate(...., date);
用于获取日期对象的日期字符串表示形式。 然后,可以使用此日期对象为准备语句的set date方法提供数据

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

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

首先将java.util.Date转换为java.sql.Date,然后尝试设置java.sql.Date

您可以使用此逻辑进行转换

如果日期是字符串,则首先使用SimpleDataFormat或DateFormat将其转换为Java.util.date类型

如果要使用日期格式,还可以使用: 但这会根据运行它的机器的区域设置更改预期的日期格式

如果您有特定的日期格式,可以使用SimpleDateFormat:

 Date d = new SimpleDateFormat("MMM. dd,yyyy").parse("Jan. 14,2014");

     java.sql.Date sqlDate = new java.sql.Date(d.getTime());

首先将java.util.Date转换为java.sql.Date,然后尝试设置java.sql.Date

您可以使用此逻辑进行转换

如果日期是字符串,则首先使用SimpleDataFormat或DateFormat将其转换为Java.util.date类型

如果要使用日期格式,还可以使用: 但这会根据运行它的机器的区域设置更改预期的日期格式

如果您有特定的日期格式,可以使用SimpleDateFormat:

 Date d = new SimpleDateFormat("MMM. dd,yyyy").parse("Jan. 14,2014");

     java.sql.Date sqlDate = new java.sql.Date(d.getTime());

根据您当前发布的代码:

st.SetDate(3,"Jan. 14,2014");
这甚至不编译。您可以尝试从字符串中获取新的日期对象,因为这是您要完成的任务,所以请使用:

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...
与此类似,您可以使用SimpleDataFormat将时间或日期和时间解析为java.util.date,然后使用date.getTime将其转换为相应的类java.sql.time和java.sql.Timestamp


还请注意,您可以p̶a̶s̶s̶检索PreparedStatementgetDate和getTime的java.util.Date对象引用,以及自java.sql.Date、java.sql.Time和java.sql.Timestamp扩展自java.util.Date以来的getTimestamp。有关更多信息,请参阅此处:

按您当前发布的代码:

st.SetDate(3,"Jan. 14,2014");
这甚至不编译。您可以尝试从字符串中获取新的日期对象,因为这是您要完成的任务,所以请使用:

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...
与此类似,您可以使用SimpleDataFormat将时间或日期和时间解析为java.util.date,然后使用date.getTime将其转换为相应的类java.sql.time和java.sql.Timestamp


还请注意,您可以p̶a̶s̶s̶检索PreparedStatementgetDate和getTime的java.util.Date对象引用,以及自java.sql.Date、java.sql.Time和java.sql.Timestamp扩展自java.util.Date以来的getTimestamp。有关更多信息,请参阅此处:

假设列类型支持日期值,您可以使用SimpleDataFormat将字符串值解析为java.util.Date并创建可应用于setDate方法的java.sql.Date

SimpleDateFormat sdf = new SimpleDateFormat("MMM. dd,yyyy");
Date date = sdf.parse("Jan. 14,2014");
java.sql.Date sqlDate = new java.sql.Date(date.getTime());

查看它以了解更多详细信息

假设列类型支持日期值,您可以使用SimpleDataFormat将字符串值解析为java.util.Date并创建可应用于setDate方法的java.sql.Date

SimpleDateFormat sdf = new SimpleDateFormat("MMM. dd,yyyy");
Date date = sdf.parse("Jan. 14,2014");
java.sql.Date sqlDate = new java.sql.Date(date.getTime());

查看它以了解更多详细信息

我真的不认为这些都是java的东西是必要的。您可以简单地使用这个非常简单的sql过程来插入日期:现在在mysql查询中,像insert INTO table_namec1、c2,DATECLUMN值'value1','value2',NOW;我认为这要简单得多:D

我真的不认为所有的java东西都是必要的。您可以简单地使用这个非常简单的sql过程来插入日期:现在在mysql查询中,像insert INTO table_namec1、c2,DATECLUMN值'value1','value2',NOW;我认为更简单的是:D

据我所知,代码甚至不会编译-PreparedStatement.setDate接受日期,而不是字符串。据我所知,代码甚至不会编译-PreparedStatement.setDate接受日期,而不是字符串。这是一个非常糟糕的主意。这是一个非常糟糕的主意。java.sql.Date扩展自java.util.Date,因此,只需传递一个java.util.Date对象引用,就不需要执行所有这些逻辑。@LuiggiMendoza我可能会错,但PreparedStatementsetDate需要一个java.sql.Date,这使得java.util.Date不兼容,但您可以将java.sql.Date传递给

ct java.util。Date@MadProgrammer是的java.sql.Date扩展了java.util.Date我的friend@girishlalwani2010但这并不意味着可以将java.util.Date视为java.sql.Date。。。或者你同意我的观点吗?就像35度,我的大脑已经融化了@Ragesh D Antony您是否知道java.sql.Date是从java.util.Date扩展而来的,所以只需传递一个java.util.Date对象引用,就不需要执行所有这些逻辑。@Luigimendoza I可能在附近出错,但PreparedStatementsetDate需要一个java.sql.Date,这使得java.util.Date不兼容,但是您可以将java.sql.Date传递给期望java.util的方法。Date@MadProgrammer是的java.sql.Date扩展了java.util.Date我的friend@girishlalwani2010但这并不意味着可以将java.util.Date视为java.sql.Date。。。或者你同意我的观点吗?就像35度,我的大脑已经融化了@Ragesh D Antony你知道吗?看起来我们有相同的想法。看起来我们有相同的想法。我认为最后的陈述没有意义。PreparedStatementsetDate需要一个java.sql.Date,使之成为java.util.Dateincompatible@MadProgrammer你说得对,我把PreparedStatementgetDate=\搞混了。编辑我的答案,我感到羞愧。我不得不自己去查一下,以确保:P@MadProgrammer答案经过编辑,希望没有更多的误导。谢谢你的回答@LuiggiMendozaI@don’我认为最后的陈述没有意义。PreparedStatementsetDate需要一个java.sql.Date,使之成为java.util.Dateincompatible@MadProgrammer你说得对,我把PreparedStatementgetDate=\搞混了。编辑我的答案,我感到羞愧。我不得不自己去查一下,以确保:P@MadProgrammer答案经过编辑,希望没有更多的误导。谢谢你的回答@LuiggiMendoza