У меня есть следующий код:
// Model the table
Table tbl = new TableBuilder("Transactions")
.addColumn(new ColumnBuilder("TransactionID", DataType.LONG).setAutoNumber(true))
.addColumn(new ColumnBuilder("ControllerID", DataType.LONG).setAutoNumber(false))
.addColumn(new ColumnBuilder("ReaderID", DataType.LONG).setAutoNumber(false))
.addColumn(new ColumnBuilder("Event", DataType.LONG).setAutoNumber(false))
.addColumn(new ColumnBuilder("Timestamp", DataType.SHORT_DATE_TIME).setAutoNumber(false))
.addColumn(new ColumnBuilder("Number", DataType.LONG).setAutoNumber(false))
.addIndex(new IndexBuilder(IndexBuilder.PRIMARY_KEY_NAME).addColumns("TransactionID").setPrimaryKey())
.toTable(db);
// Add the row
Map<String, Object> values = new HashMap<>();
values.put("ControllerID", cid);
values.put("ReaderID", rid);
values.put("Event", evtNum);
values.put("Timestamp", ts); // Long; must be converted to DataType.SHORT_DATE_TIME
values.put("Number", accNum);
tbl.addRowFromMap(values);
Я хочу преобразовать длинный ts
в формат даты, понятный MS Access. Тип столбца «Временная метка» в MS Access — Date/Time
, а значения отображаются в форме «ГГГГ-ММ-дд ЧЧ:мм:сс». Что мне нужно сделать, чтобы преобразовать ts
?
В этом ответе на аналогичную проблему упоминается преобразование в double
(это то, что Access использует для хранения Date/Time
полей, согласно источник), но я не понимаю, что мне нужно сделать с моим кодом, чтобы соответствовать ему:
Это также указывает на проблему независимости формата отображения и хранения данных со значениями даты Jet/ACE. Хранилище представляет собой двойное число, где целая часть указывает день с 30 декабря 1899 г., а десятичная часть - часть времени в течение дня. Любая введенная вами дата будет сохранена как одно число.
Дэвид В. Фентон; 4 июля 2010 г.
Примечание. я знаю как преобразовать длинный на java.util.Date
, установите время для java.util.Calendar
, затем получите из него удобочитаемую/поддающуюся разбору форматированную строку. Это не то, что я пытаюсь сделать, поэтому пометка как дубликат связанного вопроса неверна. Я пытаюсь получить двойное значение, которое понимает MS Access.