栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

错过了在Java 8中修复JDBC日期处理的机会吗?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

错过了在Java 8中修复JDBC日期处理的机会吗?

为了在数据库中表示日期2015-09-13,我们被迫选择一个时区,将该时区中的字符串“
2015-09-13T00:00:00.000”解析为java.util.Date以获取毫秒数。值,然后从该毫秒值构造一个java.sql.Date,最后在准备好的语句上调用setDate(),传递一个Calendar,该Calendar保存所选时区,以便JDBC驱动程序能够正确地重新计算日期2015-09从该毫秒值开始为-13

为什么?刚打电话

Date.valueOf("2015-09-13"); // From StringDate.valueOf(localDate);    // From java.time.LocalDate

该行为将是所有JDBC驱动程序中的正确行为:没有时区的本地日期。逆运算为:

date.toString();    // To Stringdate.toLocalDate(); // To java.time.LocalDate

您永远不应依赖

java.sql.Date
的依赖
java.util.Date
,并且事实也因此依赖于它继承了
java.time.Instant
via
Date(long)
Date.getTime()

因此,难道我们没有错过一个巨大的机会来清理JDBC中的混乱情况,同时仍保持向后兼容性吗?[…]

这取决于。在JDBC
4.2规范指定,你是能够结合

LocalDate
通过类型
setObject(int,localDate)
,并获取一条
LocalDate
通过型
getObject(int,LocalDate.class)
驱动程序是否做好准备。
default
当然,不像您建议的那样正式的方法那么优雅。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/483392.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号