问题描述:
数据库的时间字段为String类型时使用SQL语句实现时间范围查询
解决步骤:
1、在前端Vue中
向后端传一个数组,内容为具体的开始时间和结束时间。
前端写了一个addDateRange用来封装参数,以便于后端接收具体的前后开始时间。
<template>
<el-form-item label="采集日期" prop="occurrenceAt">
<el-date-picker
style="width: 215px"
v-model="dateRange"
value-format="yyyy-MM-dd"
type="daterange"
align="right"
unlink-panels
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期">
</el-date-picker>
</el-form-item>
</template>
<script>
export default {
data() {
return {
//时间范围
dateRange: [],
}
}
methods: {
this.addDateRange(this.queryParams,this.dateRange)
}
}
</script>
js:
// 添加日期范围
export function addDateRange(params, dateRange, propName) {
let search = params;
search.params = typeof (search.params) === 'object' && search.params !== null && !Array.isArray(search.params) ? search.params : {};
dateRange = Array.isArray(dateRange) ? dateRange : [];
if (typeof (propName) === 'undefined') {
search.params['beginTime'] = dateRange[0];
search.params['endTime'] = dateRange[1];
} else {
search.params['begin' + propName] = dateRange[0];
search.params['end' + propName] = dateRange[1];
}
return search;
}
2、在后端接收后,在mapper中查询 :
语句对应参数的具体作用
params.beginTime, params.beginTime | 在前端传递的参数具体名称 |
STR_TO_DATE | 转换日期 |
damage_date | 对应数据库String类型的字段 |
<!-- 时间范围查询商品-->
<select id="listByTime" resultType="com.atguigu.jxc.entity.DamageList">
select * from t_damage_list
<where>
<if test="params.beginTime != null and params.beginTime != ''">
and STR_TO_DATE(damage_date,'%Y-%m-%d') >= STR_TO_DATE(#{arams.beginTime},'%Y-%m-%d')
</if>
<if test="params.endTime != null and params.endTime != ''">
and STR_TO_DATE(damage_date,'%Y-%m-%d') <= STR_TO_DATE(#{params.endTime},'%Y-%m-%d')
</if>
</where>
</select>
3、完成图片后端接收参数图片
启蒙文章:数据库的时间字段为String类型时使用SQL语句实现时间范围查询_按string 类型查找的sql语句-CSDN博客