MySQL:年月日时分秒 与 年月日 区间比较

本文探讨了在MySQL数据库中使用不同日期字段进行查询时出现的结果差异,并通过具体SQL语句对比了START_DATE与APPLY_START_DATE两种场景下查询数量的不同。此外,还展示了如何在mybatis的mapper.xml文件中实现条件查询。

system_order 中有 字段  

APPLY_START_DATE   2018-03-06 00:00:00

START_DATE  2018-03-06

REFUSAL_REASON    RF001



SELECT COUNT(*) FROM system_order 

WHERE province = '澳门'
AND START_DATE >= '2018-03-06'
AND START_DATE <= '2018-03-06'

AND REFUSAL_REASON LIKE 'RF%'


结果为1



SELECT COUNT(*) FROM system_order 
WHERE province = '澳门'
AND APPLY_START_DATE >= '2018-03-06'
AND APPLY_START_DATE <= '2018-03-06'

AND REFUSAL_REASON LIKE 'RF%'

结果为0

SELECT COUNT(*) FROM system_order 
WHERE province = '澳门'
AND TO_DAYS(APPLY_START_DATE) >= TO_DAYS('2018-03-06')
AND TO_DAYS(APPLY_START_DATE) <= TO_DAYS('2018-03-06')
AND REFUSAL_REASON LIKE 'RF%'
结果为1



因为 

SELECT TO_DAYS('2018-03-06')

等于 737124

SELECT TO_DAYS('2018-03-06 00:00:00')   也等于 737124



mybatis 的 mapper.xml中可以这样写

<select id="queryCountRiskMapByProvince" resultType="Integer">
select count(*) from system_order  
<where>
   <if test="province !=null and province.trim()!=''">and province = #{province}</if>
   <if test="product_channel !=null and product_channel.trim()!=''">and product_channel = #{product_channel}</if>
<if test="start_date !=null and start_date.trim()!=''">and TO_DAYS(apply_start_date) <![CDATA[ >= ]]> TO_DAYS(#{start_date})</if>
<if test="end_date !=null and end_date.trim()!=''">and TO_DAYS(apply_start_date) <![CDATA[ <= ]]> TO_DAYS(#{end_date})</if>
</where>
</select>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值