2012-09-27 72 views
3

我嘗試讀出表並將其寫入csv文件。Java + mySQL:以字符串形式讀取日期

while (rs2.next()) 
{ 
    Enumeration<String> en = sqlfields.keys(); 
    while (en.hasMoreElements()) 
    { 
     String field = en.nextElement(); 
     String value = rs2.getString(field); 
     bw.write(Kapseln + value + Kapseln + Trennzeichen); 
    } 

    bw.newLine(); 
    cur++; 
} 

但如果字段類型:日期時間,我得到這個錯誤信息:

java.sql.SQLException: Cannot convert value 
'0000-00-00 00:00:00' from column 12 to TIMESTAMP. 

爲什麼Java的嘗試轉換爲時間戳?

我喜歡得到的值作爲字符串=>rs2.getString(field)

+0

http://stackoverflow.com/questions/782823/handling-datetime-values-0000-00-00-000000-in-jdbc – Vipul

回答

3

在JDBC連接屬性設置

zeroDateTimeBehavior="convertToNull" 

。裁判:http://dev.mysql.com/doc/refman/5.1/en/connector-j-reference-configuration-properties.html

編輯,將使您的連接字符串如下所示:

jdbc:mysql://yourserver:3306/yourdatabase?zeroDateTimeBehavior=convertToNull 
+0

這是唯一的,如果他用mysql真。可能他是,因爲mysql正在用'0000-00-00 00:00:00'模擬空時間。 – dan

+0

我沒有把'mysql'標籤放在問題上。 – bpgergo

+0

@bpgergo :) mysql被標記在原文中[見](http://stackoverflow.com/posts/12621716/edit/ae37f643-985b-4546-90ce-8148d8b66c2e)。 – Lion

0

下面的代碼工作正常。用這個檢查你的代碼... emp表的第四個字段是jDate,它是一個DateTime數據類型。

 Class.forName("com.mysql.jdbc.Driver"); 
     con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","test"); 

     System.out.println("Connection is : " + con); 
     Statement stmt = con.createStatement(); 
     ResultSet rs = stmt.executeQuery("select * from emp"); 

     //stmt = con.createStatement(); 

     while(rs.next()) { 
      String value = rs.getString(4); 
      System.out.println(value); 
     } 
     System.out.println("Connection is : " + con); 
     con.close(); 
相關問題