Моей таблицы выглядит следующим образом:SQLite удалить строку с помощью временной метки <х дней
tx.executeSql(
"CREATE TABLE IF NOT EXISTS mytable (
msg_id UNSIGNED INT PRIMARY KEY ASC,
msg_when DATETIME,
msg_read INTEGER,
title TEXT, msg_text TEXT
)",
добавить записи, используя этот запрос:
tx.executeSql(
"INSERT OR REPLACE INTO mytable
(msg_id, msg_when, msg_read, title, msg_text)
VALUES
(?,?,?,?,?)",
Я хочу удалить строки, которые через «х» дни старый, и я использую этот запрос, но ничего не удаляется, обратный вызов успеха вызывается без выполнения строк.
tx.executeSql(
"DELETE FROM mytable
WHERE msg_when <= datetime('now', '-? days')", [days],
Я также попытался:
var strQuery = "DELETE FROM mytable
WHERE msg_when <= datetime('now', '-" +days +" days')";
tx.executeSql(strQuery,
и:
var strQuery = "DELETE FROM mytable
WHERE msg_when <= datetime('now', '-4 days')";
tx.executeSql(strQuery,
Данные выглядит следующим образом:
json: {"status":"OK"
,"count":1
,"msg_id":"94"
,"when":"2016-08-23 11:21:01"
,"alerts":[
{"msg_id":"44"
,"title":"Medical Emergency"
,"text":"Heart Attack"
,"msg_when":"2016-08-05 14:52:03"
}
]
}
Кроме удаления строк по дате, все отлично работает. Любые предложения о том, что я могу сделать, чтобы исправить удаление?
Это не решит проблему. Как FYI, я также попытался: УДАЛИТЬ ОТ mytable WHERE msg_when <= datetime ('now', '- "+ days +" days') и строит правильную строку (в моем случае «-4 дня», но я у вас есть сообщения, которые старше 3 недель – ppetree
Если он не работает, вам нужно будет добавить некоторые примеры данных в свой вопрос. Имейте в виду, что дата/время хранятся в SQLite как строки ISO 8601, и это то, что возвращает функция 'date' Если ваши данные не в этом формате, это не сработает. Обратите внимание, что SQLite не будет ** применять формат - так же, как он не будет применять типы столбцов и т. Д. – cartant
Спасибо за информацию. как передано из mysql как json-строка «YYYY-MM-DD hh: mm: ss» классно называется msg_when. ;-) Они запрашивают и отображают как таковые. – ppetree