`
shx
  • 浏览: 30879 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java.sql.Date 和 Calendar 的误用

阅读更多
很久以前发在公司内网的文章,发出来共享,隐去具体项目、人员的名字。

某天上午xxx向我反应一个yyy项目现场的问题,zzz操作失败,我告诉他数据库里有一个时间间隔参数,把它改成0就行了。
下午胡xxx又找我,说确认那个参数的确就是0,这下我也不知道原因了,只能登录服务器检查日志,没有看到有用的线索;检查源程序,程序逻辑也是对的;弄得我也很郁闷,怀疑有非检查型的异常导致程序中途退出,于是准备在程序中多打些日志看看问题在哪,这时突然发现程序中有java.sql.Date的踪影,我意识到问题出在什么地方了。
java.sql.Date对应标准sql里的Date类型,它会把时、分、秒、毫秒位置归零,除非确认程序逻辑的确要这样做,否则时间变量采用这种类型时会导致逻辑错误。
这是一个很基础的常识,但这段代码在我们的程序里存在了四年,很简单的代码如果不加注意也很容易写错,而且恰恰因为简单我们往往意识不到这种错误的存在。
以前还碰到过一个类似的问题,Calendar,我们设置或者取得“小时”,可能很自然的就使用了它定义的HOUR 这个常量,通常这是错的,因为这个常量指的是12小时制的,应该使用HOUR_OF_DAY,这是24小时制的。
使用API的时候, 如果是第一次,至少要看一遍它的javadoc,哪怕它看起来似乎一目了然。


分享到:
评论

相关推荐

    java.util.Date与java.sql.Date互转及字符串转换为日期时间格式[文].pdf

    java.sql.Date、java.sql.Time和java.sql.Timestamp都是java.util.Date的子类(包装类)。但是,java.sql.Date类型的值插入到数据库中Date字段中会发生数据截取。这是因为java.sql.Date只包含年月日信息,时分秒毫秒...

    java.sql.date与java.util.date.pdf

    Java.sql.Date与Java.util.Date的区别和转换 Java.util.Date和Java.sql.Date是Java中两种不同的日期和时间表示方式,虽然它们都是表示日期和时间,但是它们之间存在着一些重要的区别。 首先,Java.util.Date是Java...

    java.sql.与java.util

    Java编程语言提供了两个重要的日期处理类,分别是`java.util.Date`和`java.sql.Date`,它们在处理日期和时间上有着不同的特性和用途。 `java.util.Date`是更通用的日期时间类,它包含了日期和时间的信息,可以精确...

    java.util.Date与java.sql.Date的区别

    在Java编程中,日期处理是常见的任务之一,`java.util.Date` 和 `java.sql.Date` 都是用来表示日期的类,但它们之间存在显著的区别和用法差异。 首先,`java.util.Date` 是 Java 核心库 `java.util` 包中的类,它...

    解决Exception java.sql.SQLException ORA-00600 内部错误代码

    在oracle里面运行一下,解决Exception java.sql.SQLException ORA-00600 内部错误代码

    java.util.Date、java.sql.Date与String三者之间的转换

    此java文件包括常用的日期类型之间的转换,包括java.util.Date、java.sql.Date、String之间的任意类型、格式转换......

    java.sql.SQLException: 不支持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK

    java.sql.SQLException: 不支持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK ……

    java完美按格式化字符串String转sql.date

    这里的重点在于确保转换的准确性和兼容性,因为`java.sql.Date`与`java.util.Date`是不同的,前者主要用于与数据库交互。 #### 二、解决方案 为了实现这个需求,我们可以编写一个方法`stringToSqlDate`,该方法...

    Javautildate与javasqldate区别和转换[文].pdf

    在Java编程语言中,`java.util.Date` 和 `java.sql.Date` 都是处理日期的类,但它们各自有特定的用途和特点。理解这两者的区别对于进行数据库操作和日常日期处理至关重要。 `java.util.Date` 是Java标准库中一个...

    java四种时间的区别和联系

    本文将深入探讨`java.util.Date`、`java.util.Calendar`、`java.sql.Date`、`java.sql.Time`和`java.sql.Timestamp`这五种日期时间类之间的区别和联系。 #### 1. `java.util.Date` `java.util.Date`类是Java中表示...

    utilDate和sqlDate区别、转换及应用

    Java编程语言中有两种重要的日期类型,分别是`java.util.Date`和`java.sql.Date`,它们在处理日期和时间上有着不同的特性和用途。本文将详细探讨这两种类型的区别、转换方法以及在实际应用中的使用场景。 首先,`...

    util包里的Date类转换为sql包里的Date

    本文将详细介绍如何将`java.util.Date`对象转换为`java.sql.Date`对象,这对于那些需要将日期值存储到数据库中的应用程序来说至关重要。 ### 标题:util包里的Date类转换为sql包里的Date #### 了解util包里的Date...

    Android的SQLite中DateTime类型数据的存取问题

    在 Android 中,使用 java.util.Date 类来表示日期类型数据,而 java.sql.Date 类则是为了配合 SQL DATE 而设置的数据类型。java.sql.Date 类只包含年月日信息,因为数据库中存在的非规范化部分的信息,如时分秒毫秒...

    util.date 和 sql.date 相关问题汇总

    java中util.date和sql.date的类型转换问题.帮助大家很完善的了解关于java日期类型和数据库日期类型转换的问题,很值得拥有.

    oracle+ora-各种常见java.sq

    本篇将详细探讨`java.sql.SQLException`的各种常见类型及其解决策略,帮助开发者更好地理解和处理这些错误。 1. **连接问题** - `java.sql.SQLException: No suitable driver found for.jdbc:oracle:thin:@...

    java完美按格式字符String转sql.date

    - `java.util.Date`和`java.sql.Date`虽然名字相似,但它们是不同的类,前者包含了时间信息,而后者只包含日期,没有时间部分。 - 从Java 8开始,推荐使用`java.time`包中的类(如`LocalDate`和`DateTimeFormatter`...

    个人网站的素材

    1、如何将java.util.Date转化为java.sql.Date?转化:java.sql.Date sd;java.util.Date ud;//initialize the ud such as ud = new java.util.Date();sd = new java.sql.Date(ud.getTime());2、如果要插入到数据库...

Global site tag (gtag.js) - Google Analytics