【问题标题】:How to get actual datatype using ResultSet object?如何使用 ResultSet 对象获取实际数据类型?
【发布时间】:2014-01-06 18:13:29
【问题描述】:

我正在使用 java 的 ResultSetMetaData.getColumnTypeName() 方法来查找动态构造查询的结果集数据类型。但是对于下面的查询

Select Adddate('2013-12-10',10) // MySQL 查询

它返回“字符”。为什么会这样??我期待日期。

请高手帮忙。

谢谢

【问题讨论】:

  • 你能用实际获取列类型的代码更新你的问题吗?
  • public static void main(String[] args) throws Exception { Connection cx = getConnection();语句 st = cx.createStatement(); String sql="选择添加日期('2013-12-10',10)";结果集 rs = st.executeQuery(sql); ResultSetMetaData rsMetaData = rs.getMetaData();字符串类型 = rsMetaData.getColumnTypeName(1); System.out.println("数据类型:"+type); } @peter

标签: java mysql datetime resultset


【解决方案1】:

您可以尝试将结果转换为 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

【讨论】:

  • 如果我将实际日期数据类型列作为参数传递(比如 Adddate(Salesdate,10),它返回“日期”。但是如果我传递实际日期值('2013-12-10')那么只有它返回“Char”。查询是在不同的系统中动态生成的。我没有任何官方权限来修改查询。不修改查询有没有办法找到上面的查询返回类型是“日期”数据类型? .
  • 不行,没有别的办法,因为返回的类型确实是Char
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-13
  • 2012-09-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多