@AkZwork

Как запрос к mysql переделать по sqlite?

https://www.traccar.org/clear-history/
Для очистки базы местоположения нужно выполнить:
mysql -u root -proot traccar -vve "DELETE FROM tc_positions WHERE fixTime < DATE(DATE_ADD(NOW(), INTERVAL -7 DAY)) AND id NOT IN (SELECT positionId FROM tc_devices WHERE positionid IS NOT NULL) LIMIT 10000"


Но у меня sqlite
Я пробовал сделать
sqlite3 -cmd "DELETE FROM tc_positions WHERE fixTime < DATE(DATE_ADD(NOW(), INTERVAL -3 DAY)) AND id NOT IN (SELECT positionId FROM tc_devices WHERE positionid IS NOT NULL) LIMIT 10000" database.mv.db


Однако, ошибка:
Error: near "DAY": syntax error

Подскажите, пожалуйста, что исправить.
  • Вопрос задан
  • 103 просмотра
Пригласить эксперта
Ответы на вопрос 2
@AVKor
В описании MySQLite:
MySQLite is an easy way to add MySQL functions to SQLite accessed through PDO.
Ответ написан
erge
@erge
Примус починяю
И почему вы думаете что это должно работать в SQLite? Разные БД, разный синтаксис, разные функции в том числе работы с датами...

в ошибке явное указание в чем проблема:

Error: near "DAY": syntax error

нет такого в принципе в SQLite

смотрите функции работы с датами в SQLite!
date функция SQLite

т.е. в итого вместо
DATE(DATE_ADD(NOW(), INTERVAL -3 DAY))

надо:
date ( 'now', '-3 day')

PS: между - и 3 пробелов быть не должно, SQLite этого не понимает и возвращает результатом date - null !? но почему-то во многих примерах пишут с пробелом!??
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы