Как удалить из таблицы SQL все элементы, содержащие указанное слово и дату? - PullRequest
0 голосов
/ 12 июля 2020

Я создал эту таблицу:

CREATE TABLE IF NOT EXISTS news (
title TEXT PRIMARY KEY,
date INT DEFAULT '1556399472'
);

Я хотел бы удалить столбцы, содержащие слово «яблоко» и дату публикации 26.04.2019 UT C. Пробовал примерно так:

DELETE FROM news WHERE title LIKE '%Apple%' AND date >= '1556236800' AND date <= '1556323140';

Ответы [ 2 ]

2 голосов
/ 12 июля 2020

Ваш запрос должен работать - при условии, что у вас есть строки, соответствующие условиям.

Вы можете выполнить преобразование даты в эпоху непосредственно в базе данных, и я бы также рекомендовал использовать полуоткрытые интервалы (ваш код не учитывает последнюю минуту дня). Я бы сформулировал запрос так:

DELETE FROM news 
WHERE 
    title LIKE '%Apple%' 
    AND date >= strftime('%s', '2019-04-26') 
    AND date <  strftime('%s', '2019-04-26', '+1 day') 
1 голос
/ 12 июля 2020

Модификатор 'unixepoch' может использоваться в функции date() для возврата даты в формате 'YYYY-MM-DD' из целочисленного значения, например 1556236800:

date('1556236800', 'unixepoch')

возвращает:

2019-04-26

Итак, ваш запрос можно записать так:

DELETE FROM news 
WHERE title LIKE '%Apple%' 
AND date(date, 'unixepoch') = '2019-04-26'
...