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

问题描述:

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,但输出应为2006年12月10日字符串日期转换为sql日期格式MM/dd/yyyy?

+0

这个代码提供'MM/DDD/yyy'唯一格式。 – Satya

+0

nopes,它给出如上所述的yyyy-MM-ddd格式2006-12-10 –

+0

我认为你需要一个sql_date变量的格式化程序。或者甚至更好地摆脱sql_date。不知道为什么要创建一个java.util.Date实例来创建一个java.sql.Date实例。而且你希望在创建实例之后对其进行格式化,而不是之前。 – lps

如果System.out.println(sql_date);正在显示的时间值作为2006-12-10这是因为它是使用默认yyyy-mm-dd格式,无论是从Java或从操作系统。这并不意味着日期是“错误的”,它只是以不同的方式显示。

永远记住:

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

日期的[字符串]交涉有格式。但是,格式不会以任何方式影响。无论是2006-12-2512/25/2006December 25, 20062006 décembre 25日期仍然是相同的。

所以,你不必担心使用任何特定格式日期参数,只是通过本身的价值:

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(); 
} 

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

java.sql.Date是一个子类的java.util.Date。所以我们可以格式为java.sql.Datejava.util.Date相同。

+0

谢谢Satya,它的工作原理.. –

+0

欢迎来;)@Codder – Satya