我无法理解java.sql.date的文档

时间:2011-08-10 10:40:39

标签: java date jdbc time

我正在解决跨越SQL,jdbc,JVM和linux的时区问题。

我可以看到我需要从jdbc获取/获取的类是java.sql.date。所以我阅读了文档,无法做任何事情。

据我所知,java.util.Data和java.sql.date自纪元以来都保持了毫秒数。

当我查看java.sql.date的构造函数的定义时,它说

“使用给定的毫秒时间值构造Date对象。如果给定的毫秒值包含时间信息,则驱动程序将时间组件设置为默认时区(运行时间的Java虚拟机的时区)中的时间应用)对应于零GMT。“

好的 - 问题1 - “如果给定的毫秒值包含时间信息”可能是什么意思 - 显然它包含一些时间信息!

它们是否意味着“如果您提供例程的毫秒数不代表确切的日期边界,考虑到闰秒等等”?这听起来是一个相当随机的测试,以满足/失败!

或者他们的意思是“为了天堂的缘故,在中午附近给我们一些东西,我们会把它截断到有关日期的开头?

问题2 - 用语言来说,这个奇怪的条款“FOR”是什么?显然,这种行为旨在使一些齿轮正确啮合 - 但它们的齿轮是什么?

3 个答案:

答案 0 :(得分:6)

java.sql.Datejava.sql.Timejava.sql.Timestamp 所有扩展java.util.Date,但是:

  • java.sql.Date有几毫秒四舍五入到午夜 - 这是一个“没有时间的日期”
  • java.sql.Time有不到24小时的毫秒数 - 就像java.util.Date上的1970-01-01
  • java.sql.Timestamp有完整的日期和时间 - 就像常规java.util.Date
  • 一样

答案 1 :(得分:0)

如果我是你,我会避免使用毫秒构造函数。相反,请使用Date.valueOf

答案 2 :(得分:0)

java.sql.Date仅代表日期,其中没有任何时间信息。当时应该使用java.sql.Time