當我們集成了一些前端框架,在某些展示頁面上往往具有某些查詢條件。而這其中日期查詢的處理又較為麻煩,此處,我羅列了一種當前臺上傳了一種默認的date格式的日期查詢數據至后臺未經Controller或Service層處理直接在SQL中處理的一種方式——即使用SQL的一些函數處理日期數據格式達到滿足查詢條件的目的
注:此處的數據庫使用的Oracle,使用的SQL也是針對Oracle,所以對于其他數據庫的SQL查詢可能會有一定的出入
SELECT a.id as id, a.orgid as orgid, a.deptid as deptid, a.doctorid as doctorid, a.evaluate as evaluate, a.note as note, to_char(a.note_date, 'yyyy-MM-dd') as note_date, a.business_type as business_type, a.business_note as business_note, a.evaluate_name as evaluate_name, a.evaluate_id as evaluate_id, a.effective as effective, a.bookingno as bookingno FROM hievaluate a WHERE 1 = 1 AND substr(to_char(a.note_date,'yyyy-mm-dd'),0,10) = '2018-11-22';
其中的substr()函數可有可無,查詢日期為2018-11-22的數據
在ibatis中前臺如若傳入date格式的查詢條件則需格式化查詢數據
Where子句后的查詢條件更改為
to_char(a.create_date,'yyyy-MM-dd') = to_char(#create_date:TIMESTAMP#, 'yyyy-MM-dd')
最后在ibatis中的完整格式為:
<isNotEmpty prepend="AND" property="create_date"> to_char(a.create_date,'yyyy-MM-dd') = to_char(#create_date:TIMESTAMP#, 'yyyy-MM-dd') </isNotEmpty>
此處前臺上傳的數據格式為: ? yyyy-MM-dd HH:mm:ss.S
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? eg: ? ? ? ? 2018-11-23 ?00:00:00.0
?
目前在實際項目中試用多種方法,暫時只有上面的格式正常運行