1

こんにちは、Java の現在の日付と mysql に保存されている日付を比較する方法を知りたいです。

MySQLに保存されている日付は2013-01-04 13:15:00

現在の日付を取得してJavaでこの日付を比較すると

Date date = new Date();

次に、MySQL に保存されている日付が現在の日付よりも小さい場合にクエリを作成し、結果を表示します。しかし、クエリは0の結果を返しています。

select model from abc model where model.abcStartDate >= date and model.abcEndDate >= date

MySQL では、開始日と終了日はタイムスタンプ データ型です。

以下はEJBエンティティクラスです

@Entity
@Table(name = "abc_table", uniqueConstraints = {})
public class ABCClass implements java.io.Serializable {

private static final long serialVersionUID = -1924961655993587546L;

// Fields
private Date abcStartDate;
private Date abcEndDate;

// Constructors

/** default constructor */
public ABCClass() {
}


@OrderBy(value="3")
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "abc_start_date", unique = false, nullable = false, insertable = true, updatable = true, length = 19)
public Date getabcStartDate() {
    return this.abcStartDate;
}

public void setabcStartDate(Date abcStartDate) {
    this.abcStartDate = abcStartDate;
}

@OrderBy(value="4")
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "abc_end_date", unique = false, nullable = false, insertable = true, updatable = true, length = 19)
public Date getabcEndDate() {
    return this.abcEndDate;
}

public void setabcEndDate(Date abcEndDate) {
    this.abcEndDate = abcEndDate;
}

}
4

3 に答える 3

1

正しいアプローチの 1 つ - Java でパラメーター化されたクエリを使用する クエリで準備済みステートメントを使用する

select model from abc model where model.abcStartDate <= ? and model.abcEndDate >= ?

次に、Java コードで最初と 2 番目のパラメーターを new Date() に設定します。この場合、現在の日付だけでなく、あなたが持っている任意のJava Dateを比較できます

于 2013-01-08T09:03:23.100 に答える
1

PreparedStatementを使用して SQL クエリの日付を比較する場合:

String query="select model from abc model where model.abcStartDate >= ? and model.abcEndDate <=?;";
PreparedStatement stmnt = conn.preparedStatement(query);
stmnt.setTimestamp(1, new java.sql.Timestamp(Calender.getInstance().getTime()));
stmnt.setTimestamp(2, new java.sql.Timestamp(Calender.getInstance().getTime()));
stmnt.executeQuery();
于 2013-01-08T09:30:12.057 に答える
0

日付と時間を比較する必要があり
ます。util.Date には java.sql.Timestamp を使用します。それはそれでうまくいきます。
例:
java.sql.Timestamp t = new Timestamp(Date.getTime());

于 2013-01-08T09:09:29.513 に答える