关于sql查询,按时间段查询

//service 层
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 获取当天凌晨0点0分0秒Date
Calendar begin = Calendar.getInstance();
begin.set(begin.get(Calendar.YEAR), begin.get(Calendar.MONTH), begin.get(Calendar.DAY_OF_MONTH),
0, 0, 0);
Date beginOfDate = begin.getTime();
// 获取当天23点59分59秒Date
Calendar end = Calendar.getInstance();
begin.set(end.get(Calendar.YEAR), end.get(Calendar.MONTH), end.get(Calendar.DAY_OF_MONTH),
23, 59, 59);
Date endOfDate = begin.getTime();

List<String> list = null;
try {
list = hisOutpatientMapper.findTermialList(sf.format(beginOfDate), sf.format(endOfDate));
for (int i = 0; i < list.size(); i++) {
String id = list.get(i);
logger.info("当天需要会诊账号 {}", id);
}
} catch (Exception e) {
logger.info("获取终端账号异常 {}", e.getMessage());
}

//dao层接口

List<String> findTermialList(@Param("begin") String begin, @Param("end") String end);
//mapper.xml
<select id="findTermialList" parameterType="java.lang.String" resultType="java.lang.String">
SELECT account FROM tb_conf_user WHERE hospital_id IN(
SELECT DISTINCT hospital_id FROM tb_doctor WHERE tb_user_id IN(
SELECT DISTINCT initiator_doc_id FROM his_outpatient
WHERE create_date>=#{begin} AND create_date
&lt;#{end}
UNION
SELECT DISTINCT receiver_doc_id FROM his_outpatient
WHERE create_date>=#{begin} AND create_date
&lt;#{end}
));
</select>

id="findTermialList"
入参类型 java.lang.String.
出参类型 java.lang.String.
虽然我们查询到的结果集是一个List 但是出参类型仍然是
java.lang.String.

此处有坑
create_date>=#{begin} AND create_date &lt;#{end}
小于符号应该这样写 &lt;


原文地址:https://www.cnblogs.com/guagua-join-1/p/9597942.html