2015-10-15 165 views
1
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

回答

1

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

相關問題