1

我希望能够在 Java 中将基准毫秒引用从 1970 年更改为 2008 年,这样我就可以节省数据库中的空间和唯一 ID。

最好使用 Joda-Time。

假定的 Java 7 版本中即将推出的 jsr-310 实现了它。

在此链接的离散时间线部分中,它指出毫秒计数已从 1970 年更改为 2008 年

http://today.java.net/pub/a/today/2008/09/18/jsr-310-new-java-date-time-api.html


我能看到的唯一其他选择是每次我需要查找记录时以数学方式实现它。

例如

DateTime dt = new DateTime();  
long now = dt.getMillis();

DateTime dt2 = new DateTime(2008, 1, 1, 0, 0, 0, 0);  
long then = dt2.getMillis();

long smallerDate = now - then;

较小的日期将存储在数据库中

--编辑--

所以我误读了JSR-310,这是不可能的。

有更好的方法来节省空间,然后处理数千个计算多头的请求。

我想将 long 记录为日期,因为我永远不知道将数据库移动到哪里,也许是 MySQL => Oracle。

所以我不想要时间戳,我只想要 BigInts。

4

1 回答 1

8

不,您不能,如果可以,那将是一个坏主意。无论数字有多大,数据库中的每个时间戳都将使用相同的空间。(假设您将数字存储为数字而不是字符串或其他内容。)

现在,如果你真的想要这个,你必须自己写。即在将它们放入数据库之前从时间戳中减去时间,并在将它们取出时将时间添加到时间戳中。但这是要求维护问题。(事实上​​,使用时间戳而不是数据库的本机 DATETIME 数据类型是自找麻烦。)

于 2009-09-24T13:49:58.660 回答