如何将Java的日期类型存储到MySQL的日期类型?
确保你的Date
是一个java.sql.Timestamp
(特别是如果你想要小时、分钟、秒等信息被保存)
你可以像这样将java.util.Date
转换为Timestamp
:new Timestamp(date.getTime())
PreparedStatement
来执行SQL语句,像这样:Date date = ...;
PreparedStatement ps = connection.prepareStatement("INSERT INTO mytable (this, that, datecol) values (?, ?, ?)");
ps.setString(1, "hello");
ps.setString(2, "world");
ps.setTimestamp(3, new java.sql.Timestamp(date.getTime()));
ps.executeUpdate();
现代方法使用java.time类。
MySQL中的DATE
类型仅表示日期,没有时间和时区。
因此,请使用符合JDBC 4.2标准的LocalDate
驱动程序。
ZoneId z = ZoneId.of( "Africa/Tunis" ) ;
LocalDate today = LocalDate.now( z ) ;
myPreparedStatement.setObject( … , today ) ;
检索。
LocalDate ld = myResultSet.getObject( … , LocalDate.class ) ;