sql判断语句问题 请问如何修改

List showEleMaintenanceOrder1(String maintenanceOrder, String responsiblePerson,Date[] dateRange);
<select id="showEleMaintenanceOrder1" resultMap="showMaintennanceResultMap">
        SELECT
        e.*,
        t.name AS Name
        FROM
        ele_maintenance_order e
        LEFT JOIN ele_maintenance_type t ON e.type = t.id
        WHERE 1=1
        <if test="maintenanceOrder != null and maintenanceOrder != ''">
            AND e.maintenance_order LIKE CONCAT('%', #{maintenanceOrder}, '%')
        if>
        <if test="responsiblePerson != null and responsiblePerson != ''">
            AND e.responsible_person LIKE CONCAT('%', #{responsiblePerson}, '%')
        if>
        <if test="dateRange != null and dateRange.size() >= 2">
            AND e.maintenance_start_time BETWEEN
            TO_DAYS(#{dateRange[0]}) AND TO_DAYS(#{dateRange[1]})
        if>
        ORDER BY e.maintenance_start_time DESC
    select>

请问中间的那个时间模糊查询为什么不对 是时间数组的判断有问题吗 如果都为空也返回不了任何数据 请问如何修改?

maintenance_start_time这是什么格式,to_days返回的是天数

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/664125
  • 你也可以参考下这篇文章:sql查询单位是否末级存在的数据错误
  • 除此之外, 这篇博客: 你的sql该优化了中的 23.尽量使用数字型字段,若只含数值信息的字段尽量不要设计为字符型 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    • 反例

      king_id` varchar(20) NOT NULL COMMENT '守护者Id'
      
    • 正例

      `king_id` int(11) NOT NULL COMMENT '守护者Id'`
      
    • 理由:

      • 相对于数字型字段,字符型会降低查询和连接的性能,并会增加存储开销

你可能用错函数了,应该用to_date 函数,而不是 to_days