How to convert LocalDate to SQL Date Java?

JavaJava 8ConverterJava TimeSqldatetime

Java Problem Overview


How do I convert a LocalDate to a java.sql.Date?

Attempt:

Record r = new Record();
LocalDate date = new Date(1967, 06, 22);
r.setDateOfBirth(new Date(date));

This fails (won't compile) and all I can find is Joda time stuff.

I'm using Java 8

Java Solutions


Solution 1 - Java

The answer is really simple;

import java.sql.Date;
...
LocalDate locald = LocalDate.of(1967, 06, 22);
Date date = Date.valueOf(locald); // Magic happens here!
r.setDateOfBirth(date);

If you would want to convert it the other way around, you do it like this:

Date date = r.getDate();
LocalDate localD = date.toLocalDate();

r is the record you're using in JOOQ and .getDate() is the method for getting the date out of your record; let's say you have a date column called date_of_birth, then your get method should be called getDateOfBirth().

Solution 2 - Java

If you want current date:

Date date = Date.valueOf(LocalDate.now());

If you want a specific date:

Date date = Date.valueOf(LocalDate.of(1967, 06, 22));

Solution 3 - Java

Have you tried using the toDate() method of LocalDate?

As in:

Record r = new Record();
LocalDate date = new Date(1967, 06, 22);
r.setDateOfBirth(date.toDate());

In general, it is a good idea to specify how it fails rather than just say "it fails".

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionGemtasticView Question on Stackoverflow
Solution 1 - JavaGemtasticView Answer on Stackoverflow
Solution 2 - JavaRichardKView Answer on Stackoverflow
Solution 3 - JavajuhistView Answer on Stackoverflow