Как конвертировать миллисекунды на сегодняшний день в SQLite

Я храню дату из Calendar.getTimeInMilliseconds() в SQLite DB. Мне нужно отмечать первые строки в каждом месяце в инструкции SELECT, поэтому мне нужно преобразовать время в миллисекундах в любой формат даты, используя только функцию SQLite. Как я могу избежать этого?

Ответ 1

Один из поддерживаемых SQLite форматов даты и времени - это временные метки Unix, т.е. Секунды с 1970 года. Чтобы преобразовать миллисекунды в это, просто разделите на 1000.

Затем используйте функцию даты/времени, чтобы получить год и месяц:

SELECT strftime('%Y-%m', MillisField / 1000, 'unixepoch') FROM MyTable

Ответ 2

Datetime ожидает эпохальное время, которое находится в количестве секунд, пока вы проходите в миллисекундах. Преобразование в секунды и применение.

SELECT datetime(1346142933585/1000, 'unixepoch');

Можно проверить это из этой скрипки

http://sqlfiddle.com/#!5/d41d8/223

Ответ 3

Вам нужно избегать преобразования миллисекунд на дату или функцию для преобразования миллисекунд на сегодняшний день? Поскольку функции даты sqlite работают с секундами, вы можете попробовать

  • конвертировать миллисекунды в ваш запрос, например
    select date(milliscolumn/1000,'unixepoch','localtime') from table1
  • конвертировать миллисекунд в секунды, прежде чем сохранять его в db, а затем использовать функцию даты в sql-запросе