如何将String解析为java.sql.date

时间:2012-10-11 16:13:06

标签: java date sql-date-functions

我有一个字符串

String s = "01 NOVEMBER 2012";

然后我想把它解析为sqlDate。并将其插入数据库。

是否可以将该字符串解析为sqlDate?!?!

Yup,sql日期格式为“yyyy-mm-dd”

3 个答案:

答案 0 :(得分:14)

使用SimpleDateFormat将字符串日期解析为java.util.Date

java.util.Date utilDate = new SimpleDateFormat("dd MMM yyyy").parse("01 NOVEMBER 2012");

然后使用millis将其转换为java.sql.Date

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

答案 1 :(得分:1)

java.time

我正在提供现代答案。我建议您使用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);

输出:

2012-11-01

您要求输入java.sql.Date吗?很可能您不需要任何东西。我假设您想要一个与您的SQL数据库一起使用。从JDBC 4.2开始,您也可以在其中使用LocalDate。例如:

    PreparedStatement statement = yourDatabaseConnection.prepareStatement(
            "insert into your_table (your_date_column) values (?);");
    statement.setObject(1, date);
    statement.executeUpdate();

请注意使用PreparedStatement.setObject()(不是setDate())。

如果确实需要java.sql.Date来用于尚未升级到java.time的旧版API,则转换非常简单直接:

    java.sql.Date oldfashionedJavaSqlDate = java.sql.Date.valueOf(date);
    System.out.println(oldfashionedJavaSqlDate);

2012-11-01

链接

答案 2 :(得分:0)

扩展Jigar Joshi的答案。

这段代码已经能够处理我所需要的一切。

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