2014-11-22 57 views
0

我有我的另一種轉換和存儲在另一列
STR_TO_DATE錯誤

Nov 22 2014 00:00:00 AM 

現在,我使用下面的查詢將其轉換爲日期格式和存儲的下列列值列

UPDATE DataNov2014 SET Datee = str_to_date(Date,'%d %b %Y %H:%i:%s'); 

但我收到以下異常

異常線程「main」值java.sql.SQLException:不正確的日期時間 值:「2014年11月22日0點0分」的功能STR_TO_DATE

有沒有在我的查詢/日期格式的任何錯誤? ?
任何幫助,將不勝感激,謝謝

+0

小時:分:秒是24小時制還是12小時制? – 2014-11-22 09:19:05

+0

讓它成爲12小時 – Gagan93 2014-11-22 09:39:57

+0

SO是mysql'00:00:00 AM'中的問題,無效。您只能以24小時制格式,而不是12小時制格式輸入「00:00:00 AM」。因此它需要採用24小時格式,並且str_to_date應該爲'str_to_date(Date,'%b%d%Y%H:%i:%s')。 – 2014-11-22 09:43:19

回答

0

酪氨酸這

UPDATE DataNov2014 SET Date= to_char(Date,'mon dd yyyy mm:ss:hh'); 
+0

對不起,不起作用! – Gagan93 2014-11-22 10:02:36

0

我建議你使用一個PreparedStatementDate綁定參數。此外,您可以使用try-with-resources。全部放在一起,像

String sql = "UPDATE DataNov2014 SET Datee = ?"; 
DateFormat sdf = new SimpleDateFormat("MM-dd-yyyy HH:mm:ss"); 
try (PreparedStatement ps = conn.prepareStatement(sql)) { 
    Date theDate = sdf.parse("11-22-2014 00:00:00"); 
    ps.setDate(1, new java.sql.Date(theDate.getTime())); 
    int count = ps.executeUpdate(); 
    if (count > 0) { 
     System.out.printf("Query updated %d rows.%n", count); 
    } else { 
     System.out.println("Query didn't update any rows"); 
    } 
} catch (Exception e) { 
    e.printStackTrace(); 
} 
+0

我從來沒有使用準備語句,你確定這將解決我的問題,因爲我得到的異常是在源日期格式! – Gagan93 2014-11-22 09:46:37

+0

@ Gagan93我會建議你開始使用準備好的語句。另外,如果你有一個使用'setDate()'的Java Date對象將會有所幫助(你不是從'String'轉換成'Date',並且JDBC驅動程序知道如何存儲'Date '(S))。 – 2014-11-22 09:48:58

0

假設你的領域Datee數據類型是Datetime

UPDATE DataNov2014 SET日期E = STR_TO_DATE( '2014年11月22日0點0分','%M% d%Y%H:%i:%s');