JDBC:将日期值插入 MySQL

Posted

技术标签:

【中文标题】JDBC:将日期值插入 MySQL【英文标题】:JDBC: Inserting Date values into MySQL 【发布时间】:2014-03-19 06:50:12 【问题描述】:

我想知道如何使用 Java JDBC 将日期值设置到 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 字段的定义方式。

我该怎么做?

【问题讨论】:

现有代码中的哪一部分失败了? 【参考方案1】:

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】:

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

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

【讨论】:

mysql有字符串到日期的转换系统吗? @SotiriosDelimanolis 请参考这里dev.mysql.com/doc/refman/5.6/en/datetime.html @Desolator 我没有投反对票,但是您没有使用与问题相同的日期格式,并且您删除了参数化,这实际上是一个非常好的主意。 这是否意味着我可以不加任何修改地使用我的代码? 是的。如果要以字符串格式插入日期,请​​使用setString。如果您的日期是java.util.Date,则使用setString(1, getString(myDate))【参考方案3】:

喜欢

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

【讨论】:

以上是关于JDBC:将日期值插入 MySQL的主要内容,如果未能解决你的问题,请参考以下文章

求助!!如何在java代码中,将日期插入mysql数据库(对应字段类型是datetime),用JDBC连接数据库。

如何使用 JDBC 将用户在 jsp 输入类型“时间”中输入的值插入 MYSQL 数据库

如何使用 Codeigniter 将 JQuery datepicker 中的值插入 MySQL 日期数据类型?

如何在 Java 中将日期插入 MySQL 数据库表?

使用 JDBC 在 MySQL 中插入 select

如何使用 GWT、HTML 和 JDBC 或 Hibernate 将数据插入 MySQL 数据库?