我存储日期为String
在我的数据库,格式如下:比较日期(存储为字符串)在android sqlite数据库?
YYYY-MM-DD HH:MM:SS
这是支持的格式(http://www.sqlite.org/lang_datefunc.html)之一。现在我想比较这些存储日期(以及字符串)与其他日期。我的日期都存储在column_date
列,所以我想这样的:
SELECT * FROM MyTable
WHERE
(Date(column_date) >= Date (2000-01-01) AND Datetime(column_date) <= Datetime (2050-01-01))
只要我阅读文档,The date and time functions use a subset of IS0-8601 date and time formats. The date() function returns the date in this format: YYYY-MM-DD.
所以我想,我这样做是正确 - 我创建存储字符串日期,并与日期比较从另一个字符串创建。
但它不起作用,即使column_date
是今年的日期,并且您可以看到开始日期和结束日期非常好。也尝试此(用于日期时间的日期代替):
SELECT * FROM MyTable
WHERE
(datetime(column_date) >= Date (2000-01-01) AND datetime(column_date) <= Datetime (2050-01-01))
和此之间(而不是使用< =和> =)
SELECT * FROM MyTable
WHERE
(Date(column_date) between Date (2000-01-01) AND Datetime (2050-01-01))
和所有其它可能的组合。我做错了什么,我是愚蠢的,还是文件存在,或者我错过了一件非常重要的事情?试图找到解决方案几个小时,但没有什么作品...
我不相信这是正确的......从SQLite的文档“的日期()函数返回以下格式的日期:YYYY-MM-DD”。我读到它的方式意味着即使数据以DateTime格式存储,使用Date()将只返回它的日期部分。这是不正确的? – Barak
这个工作,但仍不能理解这一点。在文档中明确指出,该日期或日期时间返回DATE。而我的专栏是字符串。那么怎么可能,你可以比较String(= mydate)与日期(使用datetime函数从字符串2000-01-01 00:00:00创建的日期)?它不合逻辑。为什么你没有把Datetime也应用到我的专栏,如果它的字符串? – qkx
所以实际上,对我来说这在逻辑上是正确的:Datetime(mydate string)<= Datetime(另一个日期字符串)。但是,这不工作,你的代码做的工作;)滑稽 – qkx