1、SQL查询时间
如果根据某个日期区间检索:
假设有张t_order表,其中有个字段 create_time 在数据库里的格式是”yyyy-MM-dd HH:mm:ss“
如果我在前端,选择2023-09-06-2023-09-07,这个区间,其实我期待的是查出这两天的数据,但是 create_time >= '2023-09-06' and create_time<= '2023-09-07' 这样是只能查出:
2023-09-06 00:00:00 - 2023-09-07 00:00:00 这个区间,也就是说2023-09-07这天的查不到。
如果t_order表,有个字段叫 `date`, 在数据库里的格式是”yyyy-MM-dd“
如果我在前端,选择2023-09-06-2023-09-07,这个区间,如果后端是根据date字段查询,
`date` >= '2023-09-06' and `date`<= '2023-09-07'
那么它查出的数据,是既包含2023-09-06,也包含2023-09-07的。
2、空指针问题
在做报表的时候
list的操作:stream流
计算:属性的运算(需要先判空),以及除数为0问题,合计问题(stream流解决)
map的操作:containsKey等操作,均需要map不能为null
3、String 和 LocalDate 的比较
二者比较,需要做转化,要不localdate转string,要不string转localdate
如果是string转localdate,
String time = "2023-09-07";
LocalDate localDate1 = LocalDate.parse(time);
LocalDate localDate2 = LocalDate.of(2023,9,7);
Boolean isSameDay = localDate1.isEqual(localDate2);
如果是localdate转string
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String formatTime= localDate2.format(dateTimeFormatter);
Boolean isSameDay = formatTime.equals(time);
4、BigDecimal计算 要四舍五入
不然遇到除不尽的小数,会报错:
java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
四舍五入的方法:
BigDecimal bigDecimal = new BigDecimal("2"); BigDecimal bigDecimal2 = new BigDecimal("3"); BigDecimal divide = bigDecimal.divide(bigDecimal2,new MathContext(2, RoundingMode.HALF_UP));
5、&&和&的区别,以及|| 和| 的区别
1.&&是“短路与”
如果左边的为false,就不会往右边计算,直接返回false。相当于只要某个地方是false,就不再往后计算了,直接返回false。
&则不管你每个结果如何,都会全部计算完。
2.||是“短路或”
如果左边的为true,就不会往右边计算,直接返回true。相当于只要某个地方是true,就不再往后计算了,直接返回true。
|则不管你每个结果如何,都会全部计算完。