У меня есть база данных postgres, содержащая информацию о дате / времени в текстовом формате. Невозможно изменить его, но мне нужно получить эти значения как миллисекунды с эпохи. Мне удалось сделать запрос, преобразовав эти записи даты и времени в метки времени, чтобы получить правильное поведение функции «max», например:
SELECT max(TO_TIMESTAMP(column_name, 'YYYY/MM/DD HH24:MI:SS'))
FROM table_name;
Но преобразование других результатов в миллисекунды, похоже, не работает. И все примеры в документации и на форумах демонстрируют только использование некоторого буквального значения, а не значения, выбранного из базы данных. Таким образом, такие строки не работают:
SELECT EXTRACT(EPOCH FROM TIMESTAMP
(select max(TO_TIMESTAMP(column_name, 'YYYY/MM/DD HH24:MI:SS'))
FROM table_name));
SELECT EXTRACT(EPOCH FROM TIMESTAMP
(select TO_TIMESTAMP(column_name,'YYYY/MM/DD HH24:MI:SS')
FROM table_name));
SELECT EXTRACT(EPOCH FROM TIMESTAMP WITH TIME ZONE(
SELECT TO_TIMESTAMP(column_name, 'YYYY/MM/DD HH24:MI:SS')
FROM table_name));
SELECT EXTRACT(EPOCH FROM TIMESTAMP WITH TIME ZONE TO_TIMESTAMP
(column_name, 'YYYY/MM/DD HH24:MI:SS'))
FROM table_name;
Есть ли реальный способ выполнить sh то, что я хочу, с помощью запроса, или я должен сделать что-то более сложное?
PS Конечно, я могу просто получить всю информацию в виде текста и использовать Qt (QDateTime), чтобы преобразовать ее в миллисекунды, но это было бы дороже, и мне было интересно, есть ли способ попросите базу данных сделать это за меня.