Можно ли изменить базовое время отсчета в миллисекундах с 1970 по 2008 в Java (например, JSR-310)

Я хочу иметь возможность изменить базовую ссылку в миллисекундах с 1970 по 2008 годы в Java, чтобы сэкономить место в базе данных и уникальных идентификаторах.

Желательно с Joda-Time.

Предстоящий jsr-310 в предполагаемом выпуске Java 7 реализует его.

В разделе"Дискретная временная шкала" этой ссылки указано, что отсчет миллисекунд изменился с 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, и это невозможно.

Существуют более эффективные способы экономии места, а затем головная боль при обработке тысяч запросов для расчета длинных позиций.

Я хотел записывать длинные как даты, потому что никогда не узнаю, куда перенести БД, возможно, MySQL => Oracle.

Поэтому я не хотел меток времени, я просто хотел BigInts.

1 ответ

Решение

Нет, ты не можешь, и это было бы плохой идеей, если бы ты мог. Каждая временная метка в вашей базе данных будет использовать один и тот же пробел, независимо от того, насколько велико число. (Предполагая, что вы сохраняете число как число, а не как строку или что-то в этом роде.)

Теперь, если вы действительно этого хотите, вам придется написать это самостоятельно. Т.е. вычтите время из ваших временных меток, прежде чем помещать их в базу данных, и добавьте время к временным меткам, когда вы вернете их обратно. Но это требует проблем с обслуживанием. (На самом деле, использование меток времени вместо собственного типа данных базы данных DATETIME вызывает проблемы.)

Другие вопросы по тегам