JDBC:将日期值插入MySQL

我想知道如何使用Java JDBC将Date值设置为MySQL数据库。 以下是我的代码。

String lastCrawlDate = "2014-01-28" PreparedStatement p = con.prepareStatement("insert into JsonData (last_crawl_date) values(?))"); p.setDate(1, Date.valueOf(lastCrawlDate)); 

如您所见, lastCrawlDate是一个String ,格式为yyyy/mm/dd

以下是我的表格如何以及如何定义Date字段。

在此处输入图像描述

我怎样才能做到这一点?

PreparedStatement提供方法setDate(..)setTimestamp(..)setTime(..)以用日期类型字段替换占位符( ? )。 使用它们

 String lastCrawlDate = "2014-01-28"; Date utilDate = new SimpleDateFormat("yyyy-MM-dd").parse(lastCrawlDate); // because PreparedStatement#setDate(..) expects a java.sql.Date argument java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime()); Connection con = ...; PreparedStatement p = con.prepareStatement("insert into JsonData (last_crawl_date) values(?))"); p.setDate(1, sqlDate); 

立即将日期作为字符串插入

 p.setString(1, lastCrawlDate); 

完全如此

 insert into Table1 (last_crawl_date) values ('2014-01-28'); 

MySQL以这些格式识别DATE值:

  • 作为“YYYY-MM-DD”或“YY-MM-DD”格式的字符串。 允许使用“宽松”语法:任何标点符号都可以用作日期部分之间的分隔符。 例如,’2012-12-31’,’2012/12/31’,’2012 ^ 12 ^ 31’和’2012 @ 12 @ 31’是等价的。

  • 作为没有“YYYYMMDD”或“YYMMDD”格式的分隔符的字符串,前提是该字符串作为日期有意义。 例如,’20070523’和’070523’被解释为’2007-05-23’,但’071332’是非法的(它具有无意义的月和日部分)并且变成’0000-00-00’。

  • 作为YYYYMMDD或YYMMDD格式的数字,只要该数字作为日期有意义。 例如,19830905和830905被解释为’1983-09-05’。

使用此方法,您可以编写一个方法来获取给定Date的字符串:

 public static String getString(Date d) { return new SimpleDateFormat("yyyy-MM-dd").format(d); } 

喜欢

 insert into JsonData (last_crawl_date) values(DATE_FORMAT('2014/02/19','%Y-%m-%d'));