分析
データの保存方法とデータのプレビュー方法が混在しています。データベースはフォーマットを気にしませんが、ユーザーは気にします。
TemporalTypeを使用してデータベースに日付を格納します。日付、時刻、タイムスタンプの 3 つの形式があります。
DateFormatを使用してユーザーに日付をプレビュー: yyyy-MM-dd、yyyy-MM-dd'T'HH:mm:ss など。
dateの不要な部分を削除して、指定された日付の任意の部分 (形式を無視して) でデータベースをクエリします。
解決
2 つの日付が必要です。1 つは今日の 00:00 と明日の 00:00 を表し、1 日 24 時間をカバーします。両方の日付から時間を削除し、クエリに渡します。
Date fromTimestamp = new Date();
Date toTimestamp = new Date();
Date fromDate = DateHelper.getDateWithoutTime(fromTimestamp);
Date toDate = DateHelper.getDateWithoutTime(
DateHelper.getTomorrowDate(toTimestamp));
//DateHelper.java
public static Date getDateWithoutTime(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
return cal.getTime();
}
public static Date getTomorrowDate(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DATE, 1);
return cal.getTime();
}
2 つのパラメーターを使用するようにクエリを更新します。
@NamedQuery(name="getEmployeeByDate",
query="select p from Emp p where p.joinDate >= ? and p.joinDate <= ?")