首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在java中检查空sql日期

问如何在java中检查空sql日期
EN

Stack Overflow用户
提问于 2018-11-24 18:22:40
回答 1查看 1.7K关注 0票数 1

我正在为一个分配开发一个医院管理系统,如果列date_of_discharge为空,我想查看病人的详细信息并显示“未出院”。我使用mysql作为database.Do,我想在检查它为null之前将sql转换为java日期。

EN

回答 1

Stack Overflow用户

发布于 2018-11-24 19:20:37

空什么都不是

我想转换…吗?在检查它为空之前?

不是的。

正如其他人所评论的那样,NULL的意思是“完全没有”。在所有数据类型中,NULL是相同的。因此,当简单地询问值是否为空时,不需要进行转换、转换或解析。

与其检查null,不如直接检查它是否为null。

是。使用IS NULL或IS NOT NULL。

代码语言:javascript
复制
SELECT * FROM patient WHERE date_of_discharge IS NULL ;

…或…

代码语言:javascript
复制
SELECT * FROM patient WHERE date_of_discharge IS NOT NULL ;

避免脱壳

如果列date_of_discharge为null,则显示“未释放”。

在Chris Date博士的建议之后,我避免在任何可能的情况下使用NULL,就好像它是魔鬼的杰作(可能就是!)。

相反,指定一个你自己任意选择的值来表示没有被分配的价值。也许时代基准日期的Unix时间和其他系统:1970年的第一个时刻,世界协调时,1970年-01-01T00:00Z。

在Java中,我们有预定义的常量:LocalDate.EPOCH和Instant.EPOCH。

决不要在java.util.Date和java.sql.Date之间进行转换

在检查sql日期之前将sql日期转换为java util日期

不,永远不要在这两种类型之间穿插。您应该忽略这样一个事实,即java.sql.Date继承自java.util.Date。通过继承,java.sql.Date实际上承载了一天的时间.然而,java.sql.Date将自己描绘成一个仅代表日期的值,没有一天的时间,也没有时区- but,这只是一个幌子。作为一种解决办法,为了实现这个假象,这一天的时间被设定为某个时区的午夜。但是java.util.Date总是代表着世界协调时的一个时刻。因此,通过铸造,你会无意中混入某个时区的影响。

令人困惑?是。这是一个非常糟糕的设计,一个可怕的黑客,也是避免这些旧的日期-时间类的许多原因之一。使用java.time类代替。

JDBC 4.2

从JDBC 4.2开始,我们可以直接与数据库交换java.time对象。使用PreparedStatement::setObject和ResultSet::getObject方法。

假装持有日期唯一值的java.sql.Date类被java.time.LocalDate所取代。LocalDate类实际上只保存一个日期,没有一天的时间,也没有时区。

代码语言:javascript
复制
LocalDate localDate = myResultSet.getObject( … , LocalDate.class ) ;

…和…

代码语言:javascript
复制
myPreparedStatement.setObject( … , localDate ) ;

关于java.time

http://docs.oracle.com/javase/10/docs/api/java/time/package-summary.html框架内置到Java8和更高版本中。这些类取代了麻烦的旧遗赠日期时间类,如java.util.Date、Calendar和SimpleDateFormat。

http://www.joda.org/joda-time/项目现在在维护模式中,建议迁移到java.time类。

要了解更多信息,请参见http://docs.oracle.com/javase/tutorial/datetime/TOC.html。并搜索堆栈溢出以获得许多示例和解释。规范是JSR 310。

您可以直接与数据库交换java.time对象。使用与JDBC 4.2或更高版本兼容的JDBC 4.2。不需要字符串,也不需要java.sql.*类。

在哪里获得java.time类?

  • Java 8、Java 9、Java 10、Java 11和更高版本--捆绑实现的标准Java的一部分。
    • Java 9添加了一些次要的特性和修复。

​

​

​

三次-额外项目使用其他类扩展java.time。这个项目是将来可能加入java.time的试验场。您可以在这里找到一些有用的类,如Interval、YearWeek、YearQuarter和更多。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53461131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档