如何从 SQL table 中删除所有包含指定单词和日期的元素?
How can I delete from a SQL table all the elements that contain a specified word and a date?
我创建了这个 table:
CREATE TABLE IF NOT EXISTS news (
title TEXT PRIMARY KEY,
date INT DEFAULT '1556399472'
);
我想删除包含单词 'apple' 且 post 日期为 26/04/2019 UTC 的列。
我试过这样的事情:
DELETE FROM news WHERE title LIKE '%Apple%' AND date >= '1556236800' AND date <= '1556323140';
您的查询应该有效 - 前提是您有符合条件的行。
您可以直接在数据库中进行日期到纪元的转换,我也建议使用半开间隔(您的代码没有考虑当天的最后一分钟)。我会将查询表述为:
DELETE FROM news
WHERE
title LIKE '%Apple%'
AND date >= strftime('%s', '2019-04-26')
AND date < strftime('%s', '2019-04-26', '+1 day')
'unixepoch'
修饰符可以在函数中使用 date()
到 return 格式为 'YYYY-MM-DD'
的日期,来自像 1556236800
这样的整数值:
date('1556236800', 'unixepoch')
returns:
2019-04-26
所以你的查询可以这样写:
DELETE FROM news
WHERE title LIKE '%Apple%'
AND date(date, 'unixepoch') = '2019-04-26'
我创建了这个 table:
CREATE TABLE IF NOT EXISTS news (
title TEXT PRIMARY KEY,
date INT DEFAULT '1556399472'
);
我想删除包含单词 'apple' 且 post 日期为 26/04/2019 UTC 的列。 我试过这样的事情:
DELETE FROM news WHERE title LIKE '%Apple%' AND date >= '1556236800' AND date <= '1556323140';
您的查询应该有效 - 前提是您有符合条件的行。
您可以直接在数据库中进行日期到纪元的转换,我也建议使用半开间隔(您的代码没有考虑当天的最后一分钟)。我会将查询表述为:
DELETE FROM news
WHERE
title LIKE '%Apple%'
AND date >= strftime('%s', '2019-04-26')
AND date < strftime('%s', '2019-04-26', '+1 day')
'unixepoch'
修饰符可以在函数中使用 date()
到 return 格式为 'YYYY-MM-DD'
的日期,来自像 1556236800
这样的整数值:
date('1556236800', 'unixepoch')
returns:
2019-04-26
所以你的查询可以这样写:
DELETE FROM news
WHERE title LIKE '%Apple%'
AND date(date, 'unixepoch') = '2019-04-26'