[英]Spring JPQL get rows between date time
我正在嘗試從數據庫中獲取記錄,我使用 java.util.date 和 java.util.calendar 來檢索從現在開始前 5 分鍾內插入的記錄我使用 java.util 日歷計算時間間隔但是當兩個日期開始和結束時已解析,我無法在我正在尋找的時間跨度中找到行,有什么建議可以解決這個問題嗎?
Date d = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(d);
cal.add(Calendar.MINUTE, -5);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS");
// SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
d = cal.getTime();
String stdate = sdf.format(d);
//System.out.println("start date" + stdate);
// process end date
Date dd = new Date();
Calendar call = Calendar.getInstance();
call.setTime(dd);
call.add(Calendar.MINUTE, -0);
dd = call.getTime();
String eddate = sdf.format(dd);
SimpleDateFormat sdft=new SimpleDateFormat("yyyyMMddHHmmssSSS");
//SimpleDateFormat sdft=new SimpleDateFormat("yyyyMMdd");
String stabledate=sdf.format(new Date());
List<customers> listofcustomers= customerepo.findAllByTscsstatusAndDateBetween("ACTIVE",sdf.parse(startdate),sdf.parse(enddate));e here
myPreparedStatement.setObject(
…
,
OffsetDateTime
.now( ZoneOffset.UTC )
.minusMinutes( 5 )
)
Date
和Calendar
類多年前被 JSR 310 中定義的現代java.time類所取代。
捕捉當下。
Instant instant = Instant.now() ;
確定五分鍾前的時刻。
Duration d = Duration.ofMinutes( 5 ) ;
Instant fiveMinutesAgo = instant.minus( d ) ;
您的數據庫列的類型必須類似於 SQL 標准類型TIMESTAMP WITH TIME ZONE
。
轉換我們的Instant
object 以與 SQL 一起使用。
OffsetDateTime odt = fiveMinutesAgo.atOffset( ZoneOffset.UTC ) ;
像這樣寫 SQL:
SELECT *
FROM event_
WHERE when_ !< ?
;
通過我們的OffsetDateTime
object 來填充占位符。
myPreparedStatement.setObject( 1 , odt ) ;
恢復。
OffsetDateTime odt = myResultSet.getObject( … , OffsetDateTime.class ) ;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.