如何将java.util.Date转换为java.sql.Date?

如何将java.util.Date转换为java.sql.Date?

我试着用java.util.Date作为输入,然后使用它创建一个查询-所以我需要一个java.sql.Date.

我惊讶地发现,它不能隐式或显式地进行转换-但我甚至不知道该如何做,因为JavaAPI对我来说仍然是相当新的。


素胚勾勒不出你
浏览 1289回答 3
3回答

侃侃无极

如何将java.util.Date转换为java.sql.Date?别。这两门课都过时了。使用java.time类而不是遗留类java.util.Date&nbsp;&&nbsp;java.sql.Date使用JDBC 4.2或更高版本。如果与尚未更新的代码进行互操作,则转换为/从java.time转换为java.time。示例查询PreparedStatement.myPreparedStatement.setObject(&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;…&nbsp;,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Specify&nbsp;the&nbsp;ordinal&nbsp;number&nbsp;of&nbsp;which&nbsp;argument&nbsp;in&nbsp;SQL&nbsp;statement. &nbsp;&nbsp;&nbsp;&nbsp;myJavaUtilDate.toInstant()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Convert&nbsp;from&nbsp;legacy&nbsp;class&nbsp;`java.util.Date`&nbsp;(a&nbsp;moment&nbsp;in&nbsp;UTC)&nbsp;to&nbsp;a&nbsp;modern&nbsp;`java &nbsp;&nbsp;&nbsp;&nbsp;.time.Instant`&nbsp;(a&nbsp;moment&nbsp;in&nbsp;UTC). &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.atZone(&nbsp;ZoneId.of(&nbsp;"Africa/Tunis"&nbsp;)&nbsp;)&nbsp;&nbsp;//&nbsp;Adjust&nbsp;from&nbsp;UTC&nbsp;to&nbsp;a&nbsp;particular&nbsp;time&nbsp;zone,&nbsp;to&nbsp;determine&nbsp;a&nbsp;date.&nbsp;Instantiating&nbsp;a&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`ZonedDateTime`. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.toLocalDate()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Extract&nbsp;a&nbsp;date-only&nbsp;`java.time.LocalDate`&nbsp;object&nbsp;from&nbsp;the&nbsp;date-time &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`ZonedDateTime`&nbsp;object.)替代者:Instant而不是java.util.Date两者都代表了世界协调时的一个时刻。但是现在只有纳秒而不是毫秒。LocalDate而不是java.sql.Date这两种方法都表示一个日期纯值,不包括一天中的某个时间,也没有一个时区.细节如果您试图使用仅限日期的值(没有一天的时间,也没有时区),请使用LocalDate类而不是java.util.Date.java.time在Java 8和更高版本中,与Java早期版本捆绑在一起的麻烦的旧日期时间类已经被新的java.time包..看见Oracle教程..中的大部分功能都已移植到Java 6和7中。Threeten-Backport并进一步适应了ThreeTenABP.A&nbsp;SQL数据类型&nbsp;DATE意味着只有约会,没有时间,没有时区。JAVA从来没有过这样一个类†,直到java.time.LocalDate在Java 8中,让我们根据特定的时区获取今天的日期来创建这样的值(例如,在确定日期时,时区在巴黎比Montréal更早)。LocalDate&nbsp;todayLocalDate&nbsp;=&nbsp;LocalDate.now(&nbsp;ZoneId.of(&nbsp;"America/Montreal"&nbsp;)&nbsp;);&nbsp;&nbsp;//&nbsp;Use&nbsp;proper&nbsp;"continent/region"&nbsp;time&nbsp;zone&nbsp;names;&nbsp;never&nbsp;use &nbsp;3-4&nbsp;letter&nbsp;codes&nbsp;like&nbsp;"EST"&nbsp;or&nbsp;"IST".在这一点上,我们可以完成。如果你JDBC驱动程序遵守JDBC 4.2规范,您应该能够通过LocalDate通孔setObject在.上PreparedStatement若要存储到SQL日期字段中,请执行以下操作。myPreparedStatement.setObject(&nbsp;1&nbsp;,&nbsp;localDate&nbsp;);同样,使用ResultSet::getObject从SQLDate列获取到JavaLocalDate对象。在第二个参数中指定类将使您的代码类型安全.LocalDate&nbsp;localDate&nbsp;=&nbsp;ResultSet.getObject(&nbsp;1&nbsp;,&nbsp;LocalDate.class&nbsp;);换句话说,在JDBC4.2中,整个问题与此无关。或者晚些时候。如果您的JDBC驱动程序不以这种方式执行,则需要返回到java.sql类型。转换为java.sql.Date若要进行转换,请使用添加到旧日期时间类中的新方法。我们可以打电话java.sql.Date.valueOf(…)转换为LocalDate.java.sql.Date&nbsp;sqlDate&nbsp;=&nbsp;java.sql.Date.valueOf(&nbsp;todayLocalDate&nbsp;);朝另一个方向走。LocalDate&nbsp;localDate&nbsp;=&nbsp;sqlDate.toLocalDate();转换自java.util.Date虽然您应该避免使用旧的日期-时间类,但在使用现有代码时可能会被迫使用。如果是这样,您可以转换到/从java.time。通过Instant类,它表示UTC中时间线上的某个时刻。阿Instant在概念上与java.util.Date..但请注意Instant有一个决议纳秒当java.util.Date只有毫秒决议。若要进行转换,请使用添加到旧类中的新方法。例如,java.util.Date.from( Instant )和java.util.Date::toInstant.Instant&nbsp;instant&nbsp;=&nbsp;myUtilDate.toInstant();要确定日期,我们需要时区的上下文。在任何特定时刻,全球各地的日期都会因时区而异。应用aZoneId得到一个ZonedDateTime.ZoneId&nbsp;zoneId&nbsp;=&nbsp;ZoneId.of&nbsp;(&nbsp;"America/Montreal"&nbsp;);ZonedDateTime&nbsp;zdt&nbsp;=&nbsp;ZonedDateTime.ofInstant&nbsp;(&nbsp;instant&nbsp;,&nbsp;zoneId&nbsp;);LocalDate&nbsp;localDate&nbsp;=&nbsp; zdt.toLocalDate();†java.sql.Date类假装只有日期,没有一天的时间,但实际上是吗?一天中的一段时间,调整到午夜时间。困惑?是的,以前的约会课糟透了。关于java.time这个java.time框架构建在Java 8及更高版本中。这些阶级取代了那个烦人的老人。遗产日期-时间类,如java.util.Date,&nbsp;Calendar, &&nbsp;SimpleDateFormat.这个尤达-时间项目,现在在维护模式,建议迁移到java.time上课。若要了解更多信息,请参见Oracle教程..并搜索堆栈溢出的许多例子和解释。规格是JSR 310.你们可以交换java.time对象直接使用数据库。用JDBC驱动程序符合JDBC 4.2或者晚些时候。不需要字符串,不需要字符串java.sql.*上课。在哪里获得java.time类?JavaSE 8,&nbsp;JavaSE 9,&nbsp;JavaSE 10,后来内置的。带有捆绑实现的标准JavaAPI的一部分。Java 9添加了一些次要的特性和修复。JavaSE 6和JavaSE 7中的大部分java.time功能都被移植到Java 6&7中。Threeten-Backport.安卓的android包实现的更高版本。java.time上课。对于早期的Android(<26),ThreeTenABP项目适应Threeten-Backport(上文所述)。看见如何使用ThreeTenaBP….这个三次-额外项目使用其他类扩展java.time。这个项目是java.time将来可能添加的一个试验场。您可能会在这里发现一些有用的类,例如Interval,&nbsp;YearWeek,&nbsp;YearQuarter,和更多.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java
MySQL