【发布时间】: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