[英]How to parse String to java.sql.date
I have a String我有一个字符串
String s = "01 NOVEMBER 2012";
Then I want parse it to sqlDate.然后我想将它解析为 sqlDate。 And insert it into the database.
并将其插入到数据库中。
Is it possible to parse that string to sqlDate?!?!是否可以将该字符串解析为 sqlDate ?!?!
Yup, sql date format is "yyyy-mm-dd"是的,sql 日期格式是“yyyy-mm-dd”
Use SimpleDateFormat
to parse String date to java.util.Date使用
SimpleDateFormat
将字符串日期解析为 java.util.Date
java.util.Date utilDate = new SimpleDateFormat("dd MMM yyyy").parse("01 NOVEMBER 2012");
and then convert it to java.sql.Date using millis然后使用millis将其转换为java.sql.Date
java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
I am providing the modern answer.我正在提供现代答案。 I recommend that you use java.time, the modern Java date and time API, for your date work.
我建议您使用 java.time(现代 Java 日期和时间 API)来进行日期工作。
DateTimeFormatter dateFormatter =
new DateTimeFormatterBuilder()
.parseCaseInsensitive()
.appendPattern("dd MMMM uuuu")
.toFormatter(Locale.ENGLISH);
String s = "01 NOVEMBER 2012";
LocalDate date = LocalDate.parse(s, dateFormatter);
System.out.println(date);
Output:输出:
2012-11-01
2012-11-01
You asked for a java.sql.Date
?你问的是
java.sql.Date
吗? By all likelihood you don't need any.很可能你不需要任何东西。 I assume that you wanted one for use with your SQL database.
我假设您想要一个用于您的 SQL 数据库。 Since JDBC 4.2 you can use
LocalDate
there too.从 JDBC 4.2 开始,您也可以在那里使用
LocalDate
。 For example:例如:
PreparedStatement statement = yourDatabaseConnection.prepareStatement(
"insert into your_table (your_date_column) values (?);");
statement.setObject(1, date);
statement.executeUpdate();
Note the use of PreparedStatement.setObject()
(not setDate()
).注意
PreparedStatement.setObject()
(不是setDate()
)的使用。
If you do need a java.sql.Date
for a legacy API not yet upgraded to java.time, the conversion is easy and straightforward:如果您确实需要
java.sql.Date
尚未升级到 java.time 的遗留 API,则转换非常简单直接:
java.sql.Date oldfashionedJavaSqlDate = java.sql.Date.valueOf(date);
System.out.println(oldfashionedJavaSqlDate);
2012-11-01
2012-11-01
Expanding on Jigar Joshi answer.扩展 Jigar Joshi 的答案。
This code has been able to handle whatever I've needed.这段代码能够处理我需要的任何事情。
import java.sql.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
Date date1;
Date date2;
Date date3;
//converting string into sql date);
try {
date1 = new java.sql.Date(
((java.util.Date) new SimpleDateFormat("dd MMM yyyy").parse("01 NOVEMBER 2012")).getTime());
date2 = new java.sql.Date(
((java.util.Date)newSimpleDateFormat("dd/MM/yyyy").parse("02/09/2012")).getTime());
date3 = new java.sql.Date(
((java.util.Date) new SimpleDateFormat("ddMMyyyy").parse("03092012")).getTime());
} catch (ParseException e) {
e.printStackTrace();
}
System.out.println("sqlDate test1:" + date1);
System.out.println("sqlDate test2:" + date2);
System.out.println("sqlDate test3:" + date3);
output:
sqlDate test1:2012-11-01
sqlDate test2:2012-09-02
sqlDate test3:2012-09-03
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.