Как разобрать метку времени MySQL в SQLite - PullRequest
0 голосов
/ 03 мая 2018

Мое Java-приложение использует базу данных MySQL, которую я пытаюсь преобразовать в SQLite. Мне удалось преобразовать саму базу данных очень хорошо, но у меня проблема с временными метками, которые хранятся в базе данных.

В частности, мои временные метки были сохранены в формате MySQL по умолчанию:

2018-04-14 16:33:00

Теперь, при попытке прочитать метку времени в SQLite, я получаю следующую ошибку:

ParseException: Unparseable date: "2018-04-14 16:33:00" does not match (\p{Nd}++)\Q-\E(\p{Nd}++)\Q-\E(\p{Nd}++)\Q \E(\p{Nd}++)\Q:\E(\p{Nd}++)\Q:\E(\p{Nd}++)\Q.\E(\p{Nd}++)

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

Вот DDL для одной из таблиц, где существует эта проблема:

create table agent_list_updates
(
    update_id integer not null
        primary key
         autoincrement,
    agent_count integer not null,
    update_timestamp timestamp default CURRENT_TIMESTAMP,
    user_id integer not null
        constraint fk_agent_list_updates_users
            references users
)
;

create index idx_agent_list_updates_idx_agent_list_updates_user_id
    on agent_list_updates (user_id)
;

Запрос:

SELECT
  agent_count,
  update_timestamp
FROM agent_list_updates;

И код Java, который на самом деле вызывает ошибку:

if (resultSet.next()) {
            return resultSet.getTimestamp("update_timestamp");
        } else {
            return null;
        }

1 Ответ

0 голосов
/ 03 мая 2018

Вы должны определить формат даты, а затем использовать его для анализа вашей метки времени как строки из resultSet. Пример:

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
while(resultSet.next()) {
    Date date = formatter.parse(resultSet.getString("update_timestamp"));
    System.out.println(date);
}

потому что для Timestamp нет конструктора по умолчанию, или вы можете сделать это с помощью метода:

new Timestamp(System.currentTimeMillis());

, но Date не предоставляет такой метод напрямую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...