mybatis技术总结
TKmybatis的框架介绍和原理分析及Mybatis新特性演示
mybatis中大于等于小于等于的写法
第一种写法(1):
原符号 < <= > >= & ' " 替换符号 < <= > >= & ' "
例如:sql如下: create_date_time >= #{startTime} and create_date_time <= #{endTime}
第二种写法(2): 大于等于 <![CDATA[ >= ]]> 小于等于 <![CDATA[ <= ]]>
例如:sql如下: create_date_time <![CDATA[ >= ]]> #{startTime} and create_date_time <![CDATA[ <= ]]> #{endTime}
mysql使用between and处理时间区间不包括右边界问题
最近自己写项目发现mysql使用between and处理时间区间不包括右边界。
SELECT * FROM timeline WHERE username = ‘Allen’ AND logTime BETWEEN ‘2017-04-01’ AND DATE_ADD(‘2017-04-04’,INTERVAL 1 DAY);
解决办法:
1,把and后的日期加一天。
SELECT * FROM timeline WHERE username = ‘Allen’ AND logTime BETWEEN ‘2017-04-01’ AND DATE_ADD(‘2017-04-04’,INTERVAL 1 DAY);
3,如果是使用oracle的话用TO_CHAR, TO_DATE函数
if (ValidateUtil.isNotEmpty(searchTO.getDateRange())) { if (ValidateUtil.isNotEmpty(fromDate) && ValidateUtil.isNotEmpty(endDate)) { Date inputFromDt = DateUtil.convertStringToDate(DateUtil.DATE_PATTERN, fromDate); Date inputToDt = DateUtil.convertStringToDate(DateUtil.DATE_PATTERN, endDate); if (inputFromDt.compareTo(inputToDt) == 0) { String inputFromDtStr = DateUtil.convertDateToString(DateUtil.SQL_DATE_PATTERN_YYYY_MM_DD, inputFromDt); sql += " AND TO_CHAR(supt.EVENT_DT,'yyyy-MM-dd') = '" + inputFromDtStr + "'"; } else { String inputFromDtStr = DateUtil.convertDateToString(DateUtil.SQL_DATE_PATTERN_YYYY_MM_DD, inputFromDt); String inputToDtStr = DateUtil.convertDateToString(DateUtil.SQL_DATE_PATTERN_YYYY_MM_DD, inputToDt); sql += " AND supt.EVENT_DT between TO_DATE('" + inputFromDtStr + "','yyyy-MM-dd') and TO_DATE('" + inputToDtStr + "','yyyy-MM-dd')"; } } }
MySQL 日期加减:
DATE_ADD(date,INTERVAL expr type) –加法
DATE_SUB(date,INTERVAL expr type) –减法