场景:一个sql查询中有一个限制条件是时间段的限制。
下面是我的XML文件中的SQL
<select id="queryKpiByElems" resultMap="kpiEntity" parameterType="com.nari.platform.entity.KpiReqVo">
SELECT * FROM monitor_statistics_latest
WHERE `bc_id` = #{bcId}
AND `kpi_name` = #{kpiName}
AND `kpi_type` = #{kpiType}
<if test="startTime !=null and startTime != ''">
<![CDATA[ and DATE_FORMAT(created_at, '%Y-%m-%d')>= DATE_FORMAT(#{startTime}, '%Y-%m-%d') ]]>
</if>
<if test="endTime !=null and endTime != ''">
<![CDATA[ and DATE_FORMAT(created_at, '%Y-%m-%d')< DATE_FORMAT(#{endTime}, '%Y-%m-%d') ]]>
</if>
ORDER BY `created_at` DESC
</select>
这里我们使用了MySQL函数DATE_FORMAT()
mysql的DATE_FORMAT()函数
定义: DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据。
语法: DATE_FORMAT(date,format)
date 参数是合法的日期。format 规定日期/时间的输出格式。
详细的教程请见W3school链接
常用format
format | 结果示例 |
---|---|
%Y-%m-%d | 2020-02-12 |
%Y-%m-%d %H:%i:%s | 22020-02-12 04:55:46 |
%b %d %Y %h:%i %p | Feb 12 2020 04:58 AM |