【问题标题】:Update ResultSet in MySQL for DateTime column在 MySQL 中为 DateTime 列更新 ResultSet
【发布时间】:2014-06-26 19:42:34
【问题描述】:

我正在寻找在遍历我的结果集时更新 MySQL 中的 DateTime 字段的最佳方法。我在这些方面发现了一些其他问题,但没有一个问题涉及 rs.updateDate 语句中的 Java 数据和 SQL 日期格式。我附上了编辑器犹豫的代码。

public class EmailQueueProcess {

    public static Boolean process()
        {

        Date processedDtm = new Date();
        java.util.Date today=new java.util.Date();
        Timestamp currentTimestamp=new Timestamp(today.getTime());

        Connection conn = null;
        PreparedStatement stmt = null;
        ResultSet rs = null;
        try {
            strSQL = "select * from portal.emailqueue where portal.emailqueue.processedDtm is null";
            conn = com.retailapppartners.Utils.staticGetConnection().getConnection();       
            stmt = conn.prepareStatement(strSQL, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);

            //now loop through and update the process datetime values
            rs = stmt.executeQuery();
            ResultSetMetaData rsMetaData = (ResultSetMetaData) rs.getMetaData();
            int numberOfColumns = rsMetaData.getColumnCount();
            while (rs.next()) {
            // Grab some data then update the row   
                rs.updateDate ("processedDtm", currentTimestamp);
                rs.updateRow();

            }

        } catch .....

【问题讨论】:

  • 您遇到什么错误?你是什​​么意思日期“格式”?
  • 编辑说:“ResultSet 类型中的方法 updateDate(String, Date) 不适用于参数 (String, Timestamp)”所以看来我的变量与 rs 不兼容。更新日期。
  • 您好,欢迎来到 Stack Overflow。请阅读帮助中心的How to create a Minimal, Complete, and Verifiable example,然后相应地编辑您的问题。谢谢。
  • @MattJohnson 编译器错误。 java.sql.Timestamp 不是java.sql.Date,所以你不能将updateDate() 与一个一起使用。

标签: java mysql datetime


【解决方案1】:

updateDate() 采用java.sql.Date。所以,我相信你在这里有两个选择,

  1. 使用rs.updateTimestamp("processedDtm", currentTimestamp);
  2. 使用java.sql.Date currentTimestamp = new java.sql.Date();

根据表 5.1 中的MySQL Documentation

These MySQL Data Types          - Can always be converted to these Java types
DATE, TIME, DATETIME, TIMESTAMP - java.lang.String, java.sql.Date, java.sql.Timestamp

所以你可以使用上面的 1 或 2。

【讨论】:

  • 列类型是 DateTime ('2014-06-24 12:36:59') rs.updateTimestamp 是正确的方法吗?
  • @RogerC 添加了文档链接,无论哪种方式。
  • @RogerC 很高兴我能提供帮助,如果您的问题得到解答,请accept the answer
猜你喜欢
  • 1970-01-01
  • 2014-04-01
  • 2015-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-13
  • 2022-01-06
相关资源
最近更新 更多