2017-05-08 103 views
0

我一直在寻找,我仍然无法理解这是如何工作的。SQLite按日期删除行

我知道SQLite不存储Date类型的值,我们必须将它们格式化为TEXT。我已经这样做了,但我的问题是如何按日期删除它们?

因为如果我做DELETE * FROM TABLE WHERE COLUMN_DATE >= '09-05-2017',我会比较字符串而不是日期,所以我想比较是不对的。

我已经看到人们在做这些类型的比较,即使它是TEXT类型。我对我毫无意义。

+2

你存储ISO8601格式(YYYY-MM-DD),您的日期的建议?如果你是那么varro的答案是正确的,如果你不是那么你应该重建你的数据库使用正确的格式,然后varro的答案是正确的。 –

回答

2

如果使用规范的文本格式,并使用正确的语法,例如,它可以工作,

DELETE FROM TABLE WHERE COLUMN_DATE >= '2017-05-09' 
+0

但是在一天结束时不是那些只是字符串? –

+0

是的 - 只是字符串(或SQLite术语中的TEXT)。所以当你比较时,你是在比较字符串,这意味着'09 -05-2017'<'10 -01-2016',因为这些字符串以文字方式排序,但是如果你使用规范的ISO格式,那么' 2017-05-09'>'2016-01-10',这是你想要的时间比较。 – varro