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

我很惊讶地发现它不能隐式或显式地进行转换-但我什至不知道该怎么做,因为Java API对我来说还很新。


#1楼

如果您使用的是MySQL,则可以将日期列传递给该日期的字符串表示形式

所以我使用DateFormatter类对其进行格式化,然后在sql语句或prepared语句中将其设置为String

这是代码图:

private String converUtilDateToSqlDate(java.util.Date utilDate) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");String sqlDate = sdf.format(utilDate);return sqlDate;
}

字符串日期= converUtilDateToSqlDate(otherTransaction.getTransDate());

//然后在您的sql语句中传递此日期


#2楼

比较两个日期(util.date或sql.date)的方法

 public static boolean isSameDay(Date a, Date b) {Calendar calA = new GregorianCalendar();calA.setTime(a);Calendar calB = new GregorianCalendar();calB.setTime(b);final int yearA = calA.get(Calendar.YEAR);final int monthA = calA.get(Calendar.MONTH);final int dayA = calA.get(Calendar.DAY_OF_YEAR);final int yearB = calB.get(Calendar.YEAR);final int monthB = calB.get(Calendar.MONTH);final int dayB = calB.get(Calendar.DAY_OF_YEAR);return yearA == yearB && monthA == monthB && dayA == dayB;
}

#3楼

在这里,将Util Date转换为Sql date和ya的示例,这是我在项目中使用的一个示例,也可能对您有所帮助。

java.util.Date utilStartDate = table_Login.getDob();(orwhat ever date your give form obj)
java.sql.Date sqlStartDate = new java.sql.Date(utilStartDate.getTime());(converting date)

#4楼

试试这个

public static String toMysqlDateStr(Date date) {String dateForMySql = "";if (date == null) {dateForMySql = null;} else {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");dateForMySql = sdf.format(date);}return dateForMySql;
}

#5楼

我正在使用以下代码,请尝试一下

DateFormat fm= new SimpleDateFormatter();

指定所需日期的格式,例如"DD-MM_YYYY"'YYYY-mm-dd'然后将java Date数据类型用作

fm.format("object of java.util.date");

然后它将解析您的日期


#6楼

此函数将从java date对象返回转换后的SQL日期。

public java.sql.Date convertJavaDateToSqlDate(java.util.Date date) {return new java.sql.Date(date.getTime());
}

#7楼

此函数将从java date对象返回转换后的SQL日期。

public static java.sql.Date convertFromJAVADateToSQLDate(java.util.Date javaDate) {java.sql.Date sqlDate = null;if (javaDate != null) {sqlDate = new Date(javaDate.getTime());}return sqlDate;}

#8楼

您可以使用此方法将util date转换为sql date,

DateUtilities.convertUtilDateToSql(java.util.Date)

#9楼

java.util.Data转换为java.sql.Data将浪费小时,分钟和秒。 因此,如果可能的话,我建议您像这样使用java.sql.Timestamp

prepareStatement.setTimestamp(1, new Timestamp(utilDate.getTime()));

有关更多信息,您可以检查此问题 。


#10楼

tl; dr

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

别。 这两类都过时了。

  • 在JDBC 4.2或更高版本java.util.Date ,请使用java.time类而不是旧版java.util.Datejava.sql.Date
  • 如果与尚未更新为java.time的代码进行互操作,则与java.time进行相互转换。

使用PreparedStatement查询的示例。

myPreparedStatement.setObject( … ,                                         // Specify the ordinal number of which argument in SQL statement.myJavaUtilDate.toInstant()                  // Convert from legacy class `java.util.Date` (a moment in UTC) to a modern `java.time.Instant` (a moment in UTC)..atZone( ZoneId.of( "Africa/Tunis" ) )  // Adjust from UTC to a particular time zone, to determine a date. Instantiating a `ZonedDateTime`..toLocalDate()                          // Extract a date-only `java.time.LocalDate` object from the date-time `ZonedDateTime` object.
)

更换:

  • Instant而不是java.util.Date
    两者都代表UTC的时刻。 但现在用的是纳秒而不是毫秒。
  • LocalDate而不是java.sql.Date
    两者都代表没有日期和时区的仅日期值。

细节

如果您尝试使用仅日期的值(无日期,无时区),请使用LocalDate类而不是java.util.Date

java.time

在Java 8和更高版本中,新的java.time软件包取代了与Java早期版本捆绑在一起的麻烦的旧日期时间类。 请参见Oracle教程 。 许多功能已被后移植到Java 6和7在ThreeTen-反向移植和在进一步适于到Android ThreeTenABP 。

SQL数据类型 DATE只能是日期,没有日期和时区。 直到Java 8中的java.time.LocalDate为止,Java才从未有过这样的类†。让我们通过根据特定时区获取今天的日期来创建这样的值(时区对于确定日期是很重要的,因为巴黎是较早的黎明例如在蒙特利尔)。

LocalDate todayLocalDate = LocalDate.now( ZoneId.of( "America/Montreal" ) );  // Use proper "continent/region" time zone names; never use 3-4 letter codes like "EST" or "IST".

至此,我们可以完成了。 如果您的JDBC驱动程序符合JDBC 4.2规范 ,则应该能够通过PreparedStatement上的setObject传递LocalDate来存储到SQL DATE字段中。

myPreparedStatement.setObject( 1 , localDate );

同样,使用ResultSet::getObject从SQL DATE列获取到Java LocalDate对象。 在第二个参数中指定类将使您的代码类型安全 。

LocalDate localDate = ResultSet.getObject( 1 , LocalDate.class );

换句话说, 在JDBC 4.2或更高版本中, 整个问题无关紧要

如果JDBC驱动程序不能以这种方式执行,则需要回退到转换为java.sql类型。

转换为java.sql.Date

要进行转换,请使用添加到旧日期时间类的新方法。 我们可以调用java.sql.Date.valueOf(…)来转换LocalDate

java.sql.Date sqlDate = java.sql.Date.valueOf( todayLocalDate );

并朝另一个方向发展。

LocalDate localDate = 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 instant = myUtilDate.toInstant();

要确定日期,我们需要时区的上下文。 在任何给定时刻,日期都会随时区在全球范围内变化。 应用ZoneId以获得ZonedDateTime

ZoneId zoneId = ZoneId.of ( "America/Montreal" );
ZonedDateTime zdt = ZonedDateTime.ofInstant ( instant , zoneId );
LocalDate localDate = zdt.toLocalDate();

†java.sql.Date类假装为仅日期,没有一天的时间,但实际上一天的时间,已调整为午夜时间。 令人困惑? 是的,旧的日期时间类是一团糟。


关于java.time

java.time框架内置于Java 8及更高版本中。 这些类取代了麻烦的旧的旧式日期时间类,例如java.util.DateCalendarSimpleDateFormat

现在处于维护模式的Joda-Time项目建议迁移到java.time类。

要了解更多信息,请参见Oracle教程 。 并在Stack Overflow中搜索许多示例和说明。 规格为JSR 310 。

您可以直接与数据库交换java.time对象。 使用与JDBC 4.2或更高版本兼容的JDBC驱动程序 。 不需要字符串,不需要java.sql.*类。

在哪里获取java.time类?

  • Java SE 8Java SE 9Java SE 10和更高版本

    • 内置的
    • 标准Java API的一部分,具有捆绑的实现。
    • Java 9添加了一些次要功能和修复。
  • Java SE 6Java SE 7
    • java.time的许多功能在ThreeTen- Backport中都被反向移植到Java 6和7。
  • 安卓系统
    • 更高版本的Android捆绑了java.time类的实现。
    • 对于早期的Android(<26), ThreeTenABP项目改编了ThreeTen-Backport (如上所述)。 请参阅如何使用ThreeTenABP…

ThreeTen-Extra项目使用其他类扩展了java.time。 该项目为将来可能在java.time中添加内容提供了一个试验场。 您可以在这里找到一些有用的类,比如IntervalYearWeekYearQuarter ,和更多 。


#11楼

首先格式化java.util.Date。 然后使用格式化的日期获取java.sql.Date中的日期

java.util.Date utilDate = "Your date"
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
final String stringDate= dateFormat.format(utilDate);
final java.sql.Date sqlDate=  java.sql.Date.valueOf(stringDate);

#12楼

我认为最好的转换方法是:

static java.sql.Timestamp SQLDateTime(Long utilDate) {return new java.sql.Timestamp(utilDate);
}Date date = new Date();
java.sql.Timestamp dt = SQLDateTime(date.getTime());

如果要将dt变量插入SQL表中,可以执行以下操作:

insert into table (expireAt) values ('"+dt+"');

#13楼

我是新手:经过大量运行后,此方法可行。 思想可能有用

     String bufDt =  bDOB.getText();  //data from formDateFormat dF = new SimpleDateFormat("dd-MM-yyyy"); //data in form is in this formatDate bbdt = (Date)dF.parse(bufDt);  // string data is converted into java util dateDateFormat dsF = new SimpleDateFormat("yyyy-MM-dd"); //converted date is reformatted for conversion to sql.dateString ndt = dsF.format(bbdt); // java util date is converted to compatible java sql datejava.sql.Date sqlDate=  java.sql.Date.valueOf(ndt);  // finally data from the form is convered to java sql. date for placing in database

#14楼

我正在尝试下面的工作正常的编码。

java.util.Date utilDate =新的java.util.Date();
java.sql.Date sqlDate =新的java.sql.Date(utilDate);


#15楼

在我从JXDatePicker(java日历)中选择日期并将其作为SQL Date类型存储在数据库中的情况下,下面的工作很好..

java.sql.Date date = new java.sql.Date(pickedDate.getDate().getTime());

其中pickedDate是JXDatePicker的对象


#16楼

使用其他答案,您可能会在时间信息方面遇到麻烦(将日期与意外结果进行比较!)

我建议:

java.util.Calendar cal = Calendar.getInstance();
java.util.Date utilDate = new java.util.Date(); // your util date
cal.setTime(utilDate);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
java.sql.Date sqlDate = new java.sql.Date(cal.getTime().getTime()); // your sql date
System.out.println("utilDate:" + utilDate);
System.out.println("sqlDate:" + sqlDate);

#17楼

没关系....

public class MainClass {public static void main(String[] args) {java.util.Date utilDate = new java.util.Date();java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());System.out.println("utilDate:" + utilDate);System.out.println("sqlDate:" + sqlDate);}}

解释它。 链接为http://www.java2s.com/Tutorial/Java/0040__Data-Type/ConvertfromajavautilDateObjecttoajavasqlDateObject.htm


#18楼

java.sql.Date sqlDate = new java.sql.Date(javaDate.getTime());

这里的javaDate是java.util.Date的实例

如何将java.util.Date转换为java.sql.Date?相关推荐

  1. 将java.time.LocalDate转换为java.util.Date类型

    本文翻译自:Convert java.time.LocalDate into java.util.Date type I want to convert java.time.LocalDate int ...

  2. java8 util.time_Java8 java.util.Date转换为java.time.ZonedDateTime

    尝试将java.util.Date转换为java.time.LocalDate时,我收到以下异常. java.time.DateTimeException: Unable to obtain Zone ...

  3. Java.util包,Java的异常处理

    Date 类  Date 类表示日期和时间 提供操纵日期和时间各组成部分的方法 Date 类的最佳应用之一是获取系统当前时间  Date 类构造方法 void display() {          ...

  4. MyBatis中提示:invalid comparison: java.util.LinkedHashMap and java.lang.String

    场景 在使用MyBatis传递多个参数并且传递的参数作为判断条件时提示: invalid comparison: java.util.LinkedHashMap and java.lang.Strin ...

  5. 【Intellij IDEA系列】IDEA泛型处理Unchecked assignment:'java.util.Map' to 'java.util.Maplt;'

    在 intellij idea 编辑器中,把一个Map类型的数据,强制类型转换的时候. 在中不想看到代码的如下警告的解决方法: 警告信息------------- 简单警告: Unchecked ca ...

  6. JDK源码解析之java.util.Iterator和java.lang.Iterable

    在Java中,我们可以对List集合进行如下几种方式的遍历:第一种就是普通的for循环,第二种为迭代器遍历,第三种是for each循环.后面两种方式涉及到Java中的iterator和iterabl ...

  7. java.util.IllegalFormatConversionException: d != java.lang.String

    今天使用过sparksql编写代码的时候因为业务需求要保留小数据最后5位数,我就使用的是formatted进行的一个操作,将小数点第六位四舍五入. java.util.IllegalFormatCon ...

  8. 将java.util.Date转换为java.time.LocalDate

    本文翻译自:Convert java.util.Date to java.time.LocalDate What is the best way to convert a java.util.Date ...

  9. localBlock在java_将java.util.Date转换为java.time.LocalDate

    小编典典 Date input = new Date(); LocalDate date = input.toInstant().atZone(ZoneId.systemDefault()).toLo ...

最新文章

  1. Hadoop版本:CDH, HDP, MapR
  2. [Linux][Hadoop] 将hadoop跑起来
  3. 数据库索引统计信息不一致_列存储索引增强功能–克隆数据库中的索引统计信息更新
  4. Invalid ADAPTORNAME specified. Type 'imaqhwinfo' for a list of available ADAPTORNAMEs. Image acquis
  5. paip.提升用户体验----注册用户名可修改\
  6. Win10安装动易5.9故障记录
  7. 自写程序的打包成软件
  8. 公众号管理系统 html,Java SpringBoot+Mybatis Layui+JQuery+html微信公众号后台管理系统...
  9. 如何给C盘扩容?亲测有效
  10. rtx服务器消息监控,rtx服务器消息监控
  11. Euclid 欧几里得算法(c语言递归版)
  12. 来吧!带你玩转 Excel VBA
  13. 浅析STM32H7 FDCAN(一)
  14. 悟空,愿你永不怕天高地厚
  15. 输入法只能输入英文,无法输入中文
  16. C语言自学保姆教程——第一节--编译准备与第一个C程序
  17. 机器学习实践:超市商品购买关联规则分析
  18. AD模数转化电路的一种实现方式
  19. 卡卡助手导致OE故障,致使邮件丢失!
  20. linux内置编辑器(vi编辑器)

热门文章

  1. Android stadio bug
  2. 如何在BIOS里设置定时关机?
  3. Jquery基本知识点的总结
  4. springcloud上传文件_Spring Cloud实战:服务链路追踪Spring Cloud Sleuth
  5. pcie转sata3硬盘不启动_没有地方塞硬盘?你或许需要这款扩展卡
  6. python transformers_transformers 安装
  7. The CLR’s Execution Model(Chapter 1 of CLR via C#)
  8. Lintcode27-Reverse 3-digit Integer
  9. Redis高可用之集群配置(六)
  10. iOS: ios视频播放(MPMediaPlayerController,AVPlayer,AVPlayerViewcontroller、ffmpeg-AVPlayer)...