2023-09-07工作心得:String 和 LocalDate 的比较

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。

|则不管你每个结果如何,都会全部计算完。

你可能感兴趣的:(java,windows)