如何将java日期类型存储到mysql日期类型?
答案 0 :(得分:2)
看到您的Date
是java.sql.Timestamp
(特别是如果你想要持续数小时,分钟,秒......)
您可以将java.util.Date
转换为Timestamp
,如下所示:new Timestamp(date.getTime())
答案 1 :(得分:0)
使用Calendar类的某个实例将日期转换为字符串并在SQL查询中使用该字符串。
答案 2 :(得分:0)
使用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();
当你这样做时,你让JDBC驱动程序将它转换为数据库所期望的格式,这样你的程序就可以保持数据库独立(你不需要像MySQL期望的那样处理它的格式化)它自己)。
在查询数据库时,也请使用PreparedStatement
并使用getTimestamp()
上的ResultSet
方法将日期作为java.sql.Timestamp
对象。
答案 3 :(得分:0)
现代方法使用 java.time 类。
MySQL中的DATE
类型仅表示日期,没有一天中的时间,也没有一个区域。
因此,LocalDate
与兼容JDBC 4.2的驱动程序一起使用。
ZoneId z = ZoneId.of( "Africa/Tunis" ) ;
LocalDate today = LocalDate.now( z ) ;
myPreparedStatement.setObject( … , today ) ;
检索。
LocalDate ld = myResultSet.getObject( … , LocalDate.class ) ;