mysql使用between and处理时间区间不包括右边界问题
2017-11-21 14:39
806 查看
mysql使用between and处理时间区间不包括右边界问题
首先需要告诉大家Mysql数据库对于一般int类型边界的包含左右边界。Oracle数据库也是包含左右边界最近自己写项目发现mysql使用between and处理时间区间不包括右边界。
SELECT * FROM timeline WHERE username = ‘Allen’ AND logTime BETWEEN ‘2017-04-01’ AND DATE_ADD(‘2017-04-04’,INTERVAL 1 DAY);
在查询的结果中没有发现有2017-04-04的记录,一番查找后发现mysql中对日期的查询对时分秒默认的是 00:00:00,所以显示出来的实际上只是‘2017-04-01 00:00:00’到‘2017-04-04 00:00:00‘,2017-04-04这天的记录是查不到的哦。
解决办法:
1,把and后的日期加一天。
SELECT * FROM timeline WHERE username = ‘Allen’ AND logTime BETWEEN ‘2017-04-01’ AND DATE_ADD(‘2017-04-04’,INTERVAL 1 DAY);
2,把and后的日期字符串拼接成’2017-04-04 23:59:59‘.
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')"; } } }1
2
3
4
5
6
7
8
9
10
11
12
13
14
MySQL 日期加减:
DATE_ADD(date,INTERVAL expr type) –加法
DATE_SUB(date,INTERVAL expr type) –减法
相关文章推荐
- mysql使用between and处理时间区间不包括右边界问题
- mysql中between and处理时间区间不包括右边界的解决办法(三种方案)
- web开发各种乱码问题处理全集 保证解决99%的乱码错误(包括mysql的乱码解决,使用struts2框架的乱码问题)
- mysql全日志添加时间戳以及SQL多行问题处理(更新)
- 在.NET 中使用mysql时间问题,
- split函数处理mysql时间问题及截取url
- Logstash使用jdbc_input同步Mysql数据时遇到的空时间SQLException问题
- 使用时间类处理时间问题
- Mysql 时间处理函数使用
- mysql中使用游标处理线上问题
- 初次使用xampp MySQL关于端口port占用问题处理
- 关于Java(JavaScript)判断处理时间的问题(包括月份,年,天等相关的差)
- 在mysql中处理时间问题
- mysql处理varchar类型的between和and的时间问题少一天解决;
- 处理MySQL中0时时间数据问题的办法
- Django 使用 MySQL 存储时间中遇到的问题(在数据库中记录插入时间、更新时间、删除时间)
- 关于python处理作Excel文件的一些问题,包括时间处理 (转)
- linux使用C++做到类似mysql的命令行表格输出(处理中英文在命令行对齐问题)
- Hive安装与问题处理_使用mysql
- java 使用mysql事物处理问题