Я храню дату из Calendar.getTimeInMilliseconds() в SQLite DB. Мне нужно отмечать первые строки в каждом месяце в инструкции SELECT, поэтому мне нужно преобразовать время в миллисекундах в любой формат даты, используя только функцию SQLite. Как я могу избежать этого?
Как конвертировать миллисекунды на сегодняшний день в SQLite
Ответ 1
Один из поддерживаемых SQLite форматов даты и времени - это временные метки Unix, т.е. Секунды с 1970 года. Чтобы преобразовать миллисекунды в это, просто разделите на 1000.
Затем используйте функцию даты/времени, чтобы получить год и месяц:
SELECT strftime('%Y-%m', MillisField / 1000, 'unixepoch') FROM MyTable
Ответ 2
Datetime ожидает эпохальное время, которое находится в количестве секунд, пока вы проходите в миллисекундах. Преобразование в секунды и применение.
SELECT datetime(1346142933585/1000, 'unixepoch');
Можно проверить это из этой скрипки
Ответ 3
Вам нужно избегать преобразования миллисекунд на дату или функцию для преобразования миллисекунд на сегодняшний день? Поскольку функции даты sqlite работают с секундами, вы можете попробовать
- конвертировать миллисекунды в ваш запрос, например
select date(milliscolumn/1000,'unixepoch','localtime') from table1
- конвертировать миллисекунд в секунды, прежде чем сохранять его в db, а затем использовать функцию даты в sql-запросе