SQL根据细粒度为天的查询
当我们集成了一些前端框架,在某些展示页面上往往具有某些查询条件。而这其中日期查询的处理又较为麻烦,此处,我罗列了一种当前台上传了一种默认的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
目前在实际项目中试用多种方法,暂时只有上面的格式正常运行