【问题标题】:Java+mySQL: Read Date as StringJava+mySQL:将日期读取为字符串
【发布时间】:2012-09-19 06:12:39
【问题描述】:

我尝试读出一个表格并将其写入一个 csv 文件。

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++;
}

但如果字段类型为:DateTime,我会收到以下错误消息:

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

为什么 Java 会尝试转换为时间戳?

我喜欢将值作为 String => rs2.getString(field)

【问题讨论】:

标签: java mysql datetime


【解决方案1】:

设置

zeroDateTimeBehavior="convertToNull"

在您的 JDBC 连接属性中。参考:http://dev.mysql.com/doc/refman/5.1/en/connector-j-reference-configuration-properties.html

EDIT,这将使您的连接字符串如下所示:

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

【讨论】:

  • 只有在他使用mysql时才这样。可能他是,因为 mysql 正在用 '0000-00-00 00:00:00' 模拟空时间。
  • 我没有在问题上加上'mysql'标签。
  • @bpgergo:) mysql 被标记在原帖see
【解决方案2】:

以下代码运行良好。用这个检查你的代码...... 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();

【讨论】:

    猜你喜欢
    • 2016-08-03
    • 1970-01-01
    • 2018-03-23
    • 1970-01-01
    • 1970-01-01
    • 2011-06-13
    • 1970-01-01
    • 2016-09-07
    • 2013-06-05
    相关资源
    最近更新 更多