【问题标题】:Check if date in database is bigger then today检查数据库中的日期是否比今天大
【发布时间】:2017-07-28 00:10:14
【问题描述】:

所以我的数据库中有一个带有预订的表。 在 Java 中,我只想展示今天及以后的保留。

PreparedStatement statement = con.prepareStatement(
                "SELECT reservatieID,klanten.voornaam,klanten.achternaam,kamerID,startDatum,eindDatum "
                + "FROM reservatie "
                + "INNER JOIN klanten ON reservatie.klantID = klanten.klantID"
                + "WHERE eindDatum =>?");
String now = basisLogin.getDate();
statement.setString(1, now);
ResultSet resultSet = statement.executeQuery(); 

这是我的代码。今天日期的字符串格式如下:yyyy-MM-dd

这是我得到的错误:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have anerror in your SQL syntax; check the manual that corresponds to your MySQL   server version for the right syntax to use near 'eindDatum >'2017-03-07'' at line 1
java.lang.ArrayIndexOutOfBoundsException: 0 >= 0    

我做错了什么?

【问题讨论】:

  • 您想使用PreparedStatament#setDate 而不是PreparedStatament#setString,并传入通过转换String 值获得的java.sql.Date 值。
  • 你需要传递一个 Date 对象而不是 String 对象。
  • 运算符是>=,而不是=>,您在WHERE 之前缺少一个空格。
  • 现在可以使用了。谢谢大家!

标签: java mysql jdbc


【解决方案1】:

使用here 中描述的函数之一,具体取决于您是否要包含时间。

例如:

...WHERE eindDatum => Current_date()");

【讨论】:

  • 代码按原样正常运行并且符合要求,因此没有语法错误。尝试使用带有日期列的字符串是运行时错误。
  • Java 代码可以编译,但这是 SQL 中的语法错误。所以说运行时异常(MySQLSyntaxErrorException)。那个 SQL 不太好。
  • 原因最终是由于将字符串与日期混合,报告为该类型的异常。另外,String now = basicLogin.getDate() 和 statement.setString(1, now);是不必要的。
  • 所以您声称 语法错误 是由有效列名 eindDatum 与有效字符串文字 '2017-03-07' 的比较引起的,而不是由不正确的使用=>(应该是>=)还是ON reservatie.klantID = klanten.klantIDWHERE eindDatum =>'2017-03-07' 中缺少的空格?对不起,但你错了。 WHERE 之前的缺失空间绝对是主要问题,因为我已经 said in a comment
【解决方案2】:

使用: WHERE eindDatum => CURDATE()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-06
    • 2016-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-13
    相关资源
    最近更新 更多