【问题标题】:Java Prepared statement equal to date comparison on timestamp fieldsJava Prepared 语句等于时间戳字段上的日期比较
【发布时间】:2018-10-02 13:56:37
【问题描述】:

我在表中有两个带有时间戳的字段。我想比较日期是否相等。出席日期::日期 = ?不工作。

以下是我的代码:

String AttendaceSql = "SELECT * FROM attandence WHERE attandencedate::date =  ? AND userid=?";
PreparedStatement pstmtAttendance = null;
pstmtAttendance = DB.prepareStatement (AttendaceSql);

ResultSet rsAtt = null;
try {
    Date dateFormat = new Date(logdate.getTime());
    pstmtAttendance.setDate(1, dateFormat);
    pstmtAttendance.setInt(2, userID);

    rsAtt = pstmtAttendance.executeQuery ();

    while (rsAtt.next ())
    {
        flag=true;
        AttendaceId = rsAtt.getInt("attandence_id");
        UserId= rsAtt.getInt("userid");
        attDate = rsAtt.getTimestamp("attandencedate");
        System.out.println(AttendaceId+","+UserId+","+logdate+","+attDate);
    }

【问题讨论】:

  • 你的问题到底是什么?
  • “你不应该将变量直接粘合到你的 SQL 中。改用查询参数”@khelwood 他确实使用了准备好的语句。这里有什么问题?
  • 在表中,我有带有时间戳数据类型的 attandencedate 字段。我在 Java 中有一个 java.sql.timestamp 类型的变量。我需要在 java 中编写一个选择查询,其中 attandencedate=variable。只需要比较日期,不需要时间。
  • equal to 不返回任何数据。但小于,大于所有工作正常。
  • @RaymondNijland 没问题,除了自从我发表评论后,他完全改写了他的问题。

标签: java postgresql jdbc timestamp postgresql-9.5


【解决方案1】:

在 while 循环中 attDate = rsAtt.getTimestamp("attandencedate"); 用 getDate(); 改变它输入。

【讨论】:

    猜你喜欢
    • 2012-12-22
    • 1970-01-01
    • 2015-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-20
    • 2020-12-16
    • 2019-11-07
    相关资源
    最近更新 更多