Преобразование метки времени UNIXEPOCH, хранящейся в базе данных, с использованием SQLite3 в сценарий bash - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть запрос sqlite3

SELECT DATETIME(ROUND(start_time / 1000), 'unixepoch') as Date FROM history

Когда я открываю базу данных в dbbrowser, (https://sqlitebrowser.org/) запрос работает нормально.

Теперь я пытаюсь выполнить команду в сценарии bash.

echo 'SELECT DATETIME(ROUND(start_time / 1000), 'unixepoch') as Date FROM history' | sqlite3 database.db

В результате возникает ошибка, указывающая нет такого столбца unixepoch

Я также пытался

echo 'SELECT DATETIME(ROUND(start_time / 1000), 'unixepoch') FROM history' | sqlite3 database.db

Я посмотрел справочную страницу sqlite3 и не вижу никакого использования для datetime.

Запуск

echo 'SELECT start_time FROM history' | sqlite3 database.db

вернет значение 13 di git unix эпохи ie: 1586107737232

1 Ответ

2 голосов
/ 18 апреля 2020
echo 'SELECT DATETIME(ROUND(start_time / 1000), 'unixepoch') as Date FROM history' | sqlite3 database.db
# ...^..........................................^.........^......................^

Это ошибка цитирования: вы не можете вставлять одинарные кавычки в одну строку в кавычках. «Внутренние» кавычки вокруг «unixepoch» отбрасываются.

Сделайте это

echo "SELECT DATETIME(ROUND(start_time / 1000), 'unixepoch') as Date FROM history" | sqlite3 database.db
# ...^..........................................^.........^......................^
...