Обновление записей старше n минут - PullRequest
0 голосов
/ 22 февраля 2011

У меня есть база данных sqlite с полем datatime last_accessed и другим полем stale.

Как обновить устаревшее поле для записей старше, чем, скажем, 5 минут?

, например

Это не похоже на работу.

обновить mytable set stale = 1 где (datetime ('now') - last_accessed)> 300;

На самом деле выберите дату и время («сейчас») - «2011-02-22 08:48:34»; возвращает 0.

Как мне сделать арифметику в sqlite3?

EDIT: Так как я конвертирую last_accessed в datetime, на самом деле это просто поле секунд. Как вы думаете, я должен вместо этого преобразовать это поле в поле секунд? Тогда мне не нужно делать что-то вроде strftime ('% s', time ('now')) - strftime ('% s', last_accessed)?

Edit2: Насколько я могу судить, функции difftime нет. Я обнаружил, что вы должны использовать формат strftime ('% s', datetime ('now')) - ..., чтобы он работал. Однако вместо этого я просто преобразовал в целочисленное поле, в котором непосредственно храню время (NULL).

Ответы [ 2 ]

0 голосов
/ 22 февраля 2011

Чтобы ответить на этот вопрос, если другие задаются вопросом, как правильно делать арифметику даты / времени в sqlite.

Правильный ответ:

update mytable set stale = 1, где strftime ('% s ', datetime (' now ')) - strftime ('% s ', last_accessed)> 300;

Однако мне не нужен формат даты и времени в таблице, и вместо этого я выбралвместо числового поля.Я не ищу больше ответов на этот вопрос.

Спасибо.

0 голосов
/ 22 февраля 2011

Я думаю, это должно быть

select datetime('now') - datetime('2011-02-22 08:48:34');

или что-то в этом роде (см. examples ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...