我正在使用java的ResultSetMetaData.getColumnTypeName()方法來查找動態構造查詢的結果集數據類型。但對於下面的查詢如何使用ResultSet對象獲取實際的數據類型?
選擇ADDDATE( '2013年12月10日',10)// MySQL查詢
它返回 「字符」。爲什麼如此?我期待日期。
請專家幫忙。
感謝
我正在使用java的ResultSetMetaData.getColumnTypeName()方法來查找動態構造查詢的結果集數據類型。但對於下面的查詢如何使用ResultSet對象獲取實際的數據類型?
選擇ADDDATE( '2013年12月10日',10)// MySQL查詢
它返回 「字符」。爲什麼如此?我期待日期。
請專家幫忙。
感謝
你可以嘗試將結果轉換爲DATE:
SELECT CAST(ADDDATE('2013-12-10',10) as DATE);
我覺得ADDDATE行爲就像DATE_ADD,在這種情況下返回字符串: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-add
如果我將實際日期數據類型列作爲參數傳遞(Say Adddate(Salesdate,10)),它會返回「Date」,但如果我傳遞實際日期值('2013-12-10'), 「Char」。查詢是在不同的系統中動態生成的,我沒有任何官方權限修改查詢,如果沒有修改查詢,有沒有什麼辦法可以找到上面查詢返回類型是「Date」的數據類型? –
否,沒有其他辦法,因爲返回的類型確實是* Char *。 – spektom
您可以更新問題與實際獲得列類型的代碼? – Pieter
public static void main(String[] args) throws Exception { Connection cx = getConnection(); Statement st = cx.createStatement(); \t String sql="Select Adddate('2013-12-10',10)"; ResultSet rs = st.executeQuery(sql); ResultSetMetaData rsMetaData = rs.getMetaData(); String type = rsMetaData.getColumnTypeName(1); System.out.println("Data Type: "+type); }
@peter –