【问题标题】:PreparedStatement and CURDATE() MySQL functionPreparedStatement 和 CURDATE() MySQL 函数
【发布时间】:2014-12-19 09:59:41
【问题描述】:

在 PreparedStatements 中使用 CURDATE() mysql 函数的正确方法是什么? 表列是 DATE 类型,表中插入的值必须像 1988-07-29。

ps.setDate(5, ...);

【问题讨论】:

  • (stackoverflow.com/a/7626080/2749470) 这可能会帮助你
  • 为什么不将 curdate() 调用作为 SQL 语句的一部分并删除它的参数?
  • @BhargavModi 应该接受您的回答,它可以工作
  • 如果对您有帮助,我应该将其添加为答案吗??
  • @BhargavModi 我认为是的,因为答案只是在 SQL 语句中使用 now() 并删除它的参数。

标签: java mysql prepared-statement


【解决方案1】:

没有。您要么在 Java 中创建当前日期,要么使用 CURDATE() 准备语句

【讨论】:

    【解决方案2】:

    喜欢:

    SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd");
    String fd = f.format(new Date());
    Date date = f.parse(fd);
    preparedStatement.setTimestamp(index, new Timestamp(date.getTime()));
    

    【讨论】:

      【解决方案3】:

      您可以通过两种方式进行操作,一种来自java,如下所示 使用 java.sql.Date

      例如: 使用java.sql.Date

      java.sql.Date date = java.sql.Date.valueOf("2013-09-04");
      

      如果要插入当前日期:

      ps.setDate(2, new java.sql.Date(System.currentTimeMillis()));
      

      使用java.sql.Timestamp

      ps.setTimestamp(2, new java.sql.Timestamp(System.currentTimeMillis()));
      

      另一种方法是从SQL 到数据库支持操作,例如now() 用于MySQLcurrent_timestamp() 用于PostgreSQL 等等看看下面的例子

      String sql = "INSERT INTO user (email, creationdate) VALUES (?, now())";//for MySQL
      

      了解更多详情Use this link(我最喜欢的作者之一)。

      很高兴为您提供帮助:)

      【讨论】:

        【解决方案4】:

        喜欢

        preparedStatement.setTimestamp(5, new Timestamp(new Date().getTime()));
        

        【讨论】:

          猜你喜欢
          • 2010-10-31
          • 1970-01-01
          • 2016-08-23
          • 2014-08-07
          • 2015-11-02
          • 2012-12-09
          • 1970-01-01
          • 2014-03-29
          • 1970-01-01
          相关资源
          最近更新 更多