2

同じ質問を再度投稿して申し訳ありませんが、知りたいです。

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

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

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

Date date = new Date();

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

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

の ":?" 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;
}

}

そしてそれは例外をスローします

Exception thrown from bean; nested exception is: Exception [EclipseLink-3001] (Eclipse Persistence Services - 2.2.1.v20110722-r9776): org.eclipse.persistence.exceptions.ConversionException
Exception Description: The object [65464533565], of class [class java.lang.String], could not be converted to [class java.lang.Integer].
Internal Exception: java.lang.NumberFormatException: For input string: "65464533565"
4

1 に答える 1

0

JPQLでの日付比較は以下の方法で行うことができます。

現在の日時と比較する場合

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

またはクエリを作成してパラメーターを渡す

query = em.createQuery("select model from abc model where model.abcStartDate >= 
:time and model.abcEndDate >= :time");
query.setParameter("time", new Date(), TemporalType.TIMESTAMP);
于 2013-01-08T18:28:01.610 に答える