Можно ли изменить базовое время отсчета в миллисекундах с 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 вызывает проблемы.)