JDBC:将日期值插入MySQL

时间:2014-02-19 05:41:32

标签: java mysql sql date jdbc

我想知道如何使用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));

如您所见,lastCrawlDateString,格式为yyyy/mm/dd

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

enter image description here

我该怎么做?

3 个答案:

答案 0 :(得分:11)

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);

答案 1 :(得分:4)

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

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'。

  •   

使用这种方法,您可以编写一个方法来获取给定日期的字符串:

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

答案 2 :(得分:-1)

喜欢

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