2011-11-29 52 views
0

在通过Joda-Time Hibernate user guide查看时,似乎没有对SQL DATE类型的未来支持。由于TIMESTAMP被指定在1970年1月1日开始 - 1970年以前的日期唯一安全的传输似乎是PersistentLocalTimeAsString的VARCHAR(如果希望限制自己到Joda Hibernate库)。Joda-Time Hibernate PersistentYearMonthDay Deprecated

作为使用DATE(并且看到Joda Hibernate不是)的人,我想知道是否有某些原因需要切换到VARCHAR和PersistentLocalTimeAsString。 IE浏览器。什么动机决定弃用PersistentYearMonthDay?

回答

1

它不是1970年开始的,它是一个零点,但它可能是负面的。 PersistentYearMonthDay弃用的原因是弃用YearMonthDay。动机为“使用LOCALDATE的具有更好的内部实现,自1.3已经可用”

而且,它的怪异,但the source code为PersistentLocalDate具有DATE SQL类型,而用户指南说TIMESTAMP,试试吧,可能只是用户指南中的一个错字。

+0

谢谢,我没有检查过源码。惊喜,所以SQL DATE支持:-)有趣的是,我一直认为时间戳是无符号整数。 – Colin

1
long someTimeBefore1970 = -83688769L; 
Timestamp ts = new Timestamp(someTimeBefore1970); 
System.out.println(ts); 

0设置为1970年1月1日,但这并不意味着以前的日期不受支持。

+0

好点。奇怪的是,MySQL文档给TIMESTAMP的'范围''1970-01-01 00:00:01'UTC到'2038-01-19 03:14:07'。 – Colin