代码之家  ›  专栏  ›  技术社区  ›  PeakGen

JDBC:将Date值插入MySQL

  •  8
  • PeakGen  · 技术社区  · 12 年前

    我想知道如何使用JavaJDBC将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 字段。

    enter image description here

    我该怎么做?

    3 回复  |  直到 12 年前
        1
  •  13
  •   Sotirios Delimanolis    12 年前

    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);
    
        2
  •  4
  •   user586399 user586399    12 年前

    立即以字符串形式插入日期

    p.setString(1, lastCrawlDate);
    

    完全一样

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

    MySQL识别以下格式的DATE值:

    • 格式为“YYYY-MM-DD”或“YYY-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或YYYMMDD格式的数字,前提是数字作为日期有意义。例如,19830905和830905是 解释为“1983-09-05”。

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

    public static String getString(Date d) {
       return new SimpleDateFormat("yyyy-MM-dd").format(d);
    }
    
        3
  •  -1
  •   Abdul Manaf    12 年前

    喜欢吗

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