Convert between LocalDate to java.sql.Date

In Java, a date is represented by mainly 3 classes:

  • java.time.LocalDate: is part of the new Java 8 Date Time API. It only contains the date parts (day, month, year) and does not contain the time part (hour, minute and second).
  • java.util.Date: It is a legacy class used before Java 8 version. It contained the date as well as the time parts. It stores the number of milliseconds since the epoch (January 1, 1970, 00:00:00 GMT).
  • java.sql.Date: It is also a legacy class and a subclass of java.util.Date. It is specifically designed to work with databases through the JDBC API. It can be used as SQL dates and pass dates between Java and SQL databases without losing the time information. It overrides the methods of java.util.Date to handle only the date part, effectively setting the time component to midnight (00:00:00).

In this tutorial, we will learn to convert from LocalDate to java.sql.Date and vice versa.

1. java.sql.Date -> LocalDate

Use java.sql.Date.toLocalDate() method to get LocalDate from a java.sql.Date.

In the following example, we are first creating an instance of java.sql.Date. In our application, we can get it from the database. Next, we call sqlDate.toLocalDate() to get the LocalDate instance.

//Get SQL date instance
java.sql.Date sqlDate = new java.sql.Date(new Date().getTime());

//Get LocalDate from SQL date
LocalDate localDate = sqlDate.toLocalDate();

System.out.println( localDate );    //2022-01-15

2. Convert LocalDate to java.sql.Date

Use java.sql.Date.valueOf() method to get SQL date from a LocalDate.

In the following example, we are first creating an instance of java.time.LocalDate. In our application, we can get it from a method or create outselve. Next, we call sqlDate.valueOf() to get the Date instance. Note that valueOf() is a static method so it can be directly called from the class reference.

//Local date instance
LocalDate localDate = LocalDate.now();

//Get LocalDate from SQL date
java.sql.Date sqlDate = java.sql.Date.valueOf( localDate );

System.out.println( sqlDate );  //2022-01-15    

Happy Learning !!

Sourcecode on Github

Comments

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments

About Us

HowToDoInJava provides tutorials and how-to guides on Java and related technologies.

It also shares the best practices, algorithms & solutions and frequently asked interview questions.