字符串日期转换为sql日期格式MM / dd / yyyy?

时间:2015-10-15 18:38:09

标签: java sql date ms-access jdbc

public void setEmployeeDetails(String month,String year,String day) throws

SQLException, ParseException
{

        String sql="INSERT INTO EmployeeDetails (SiteName,EmployeeName,EmployeePhoneNumber,Date) VALUES(?,?,?,?)"; 
          pStmt = conn.prepareStatement(sql) ;

             String date=month+"/"+day+"/"+year;
             SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy");
             java.util.Date parsed = format.parse(date);
             java.sql.Date sql_date = new java.sql.Date(parsed.getTime());
             System.out.println(sql_date);
         }
    public static void main(String args[]) throws SQLException, ClassNotFoundException, ParseException{
        Employee_Details_DAO e=new Employee_Details_DAO();
        e.setEmployeeDetails("12","2006","10");
    }

我想将字符串日期转换为格式MM / ddd / yyy到sql ms访问日期格式。但我得到了2006-12-10的输出,但输出应该是12/10/2006

2 个答案:

答案 0 :(得分:1)

如果System.out.println(sql_date);将日期值显示为2006-12-10,那是因为它使用的是默认 yyyy-mm-dd格式,无论是来自Java还是来自操作系统。它并不意味着日期错误",它只是以不同的方式显示。

永远记住:

日期没有格式。它们只是与特定日期对应的(数字)值。

[String]日期表示 格式。但是,格式不会影响以任何方式。它的2006-12-2512/25/2006December 25, 20062006 décembre 25日期是否仍然相同。

因此,您不必担心将任何特定的格式用于Date参数,只需传递值本身:

try (
        Connection conn = DriverManager.getConnection(connStr);
        PreparedStatement ps = conn.prepareStatement(
                "INSERT INTO EmployeeDetails ([Date]) VALUES (?)")) {
    String month = "12";   //
    String year = "2006";  // sample data
    String day = "10";     //
    ps.setDate(1, java.sql.Date.valueOf(year + "-" + month + "-" + day));
    ps.executeUpdate();
}

答案 1 :(得分:0)

 System.out.println(format.format(sql_date));//12/10/2006

java.sql.Datejava.util.Date的子类。因此,我们可以将java.sql.Date格式化为java.util.Date