null值对于日期类型

来源:9-1 表属性设置为 NULL,你可能要面临很多麻烦

慕神3049327

2020-10-03

在使用日期类型,需要显示时间是无限的,例如某个活动结束时间是无限,原来是使用一个单独的字段来判断这条记录结束时间是否为无限,但是如果有很多日期都可以设置无限,那么就要多维护很多字段。
我后来使用的方法是把将这个字段设为null值,如果前端发现有null值,就返回无限,但是老师说尽量少使用null,那么类似这样日期有无限显示的需求,除了加一个字段进行判断和设置为null,还有什么其他办法吗,如果有,希望老师可以给我一些其他思路

写回答

1回答

张勤一

2020-10-03

同学你好:

    我理解你这里的意思,不过,很多事情都是相对的,允许 NULL 的列当然是不建议的,但是,如果是实在不可避免,那么,设置为 NULL 也是可以的。毕竟,在查询和索引时,只是会对这一列有些“副作用”,但实际上,对整张表或者你的业务系统来说,影响不大,几乎可以忽略不计。

    那么,如果确实是不想某一列允许 NULL,针对于你这里的业务场景,我们可以怎么做呢?我这里给你个实现方案:

    如果这一列是时间类型,那么,设置为一个未来最大的时间(当前列数据类型支持的)或者是设置一个过去的最小时间,比如 1970 年。那么,你在使用时,判断下这个时间,如果是 MAX 或者是 MIN,返回给前端 NULL 即可。

    可能你会问:如果设置为最大的未来时间,例如 2040 年,到那个时间怎么办呢?我会告诉你:不要想太多,20 年以后,这个业务系统也许早就不存在了。认准当下,用最简单的办法解决当下的事情,会给你带来时间上、效率上的提升。


    我是勤一,致力于将这门课程的问答区打造为 Java 知识体系知识库,Java 知识体系 BBS!共同建造、维护这门课程,我需要每一个你!

2
2
Ans217
老师你好,你的回答我想问一下,假设我在一些电商业务中设置商品的一些赠品数量,设置它的最大领取数量为无限,那也可以设置为999999之类的么
2020-11-08
共2条回复

Java实操避坑指南 SpringBoot/MySQL/Redis错误详解

掌握业务开发中各种类型的坑,,Java web开发领域通用

452 学习 · 204 问题

查看课程