gpt4 book ai didi

android - 比较android sqlite数据库中的日期(存储为字符串)?

转载 作者:IT老高 更新时间:2023-10-28 23:30:27 26 4
gpt4 key购买 nike

我将日期作为 String 存储在我的数据库中,格式如下:

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))

当我阅读文档时,日期和时间函数使用 IS0-8601 日期和时间格式的子集。 date() 函数以这种格式返回日期:YYYY-MM-DD。 所以我想,我做得对 - 我从存储的字符串创建日期并将其与从另一个字符串创建的日期进行比较。

但它不起作用,即使 column_date 是今年的日期,并且您可以看到开始和结束日期非常仁慈。也试过这个(使用日期时间而不是日期):

SELECT  * FROM MyTable
WHERE
(datetime(column_date) >= Date (2000-01-01) AND datetime(column_date) <= Datetime (2050-01-01))

and this(使用 between 代替 <= 和 >=)

SELECT  * FROM MyTable
WHERE
(Date(column_date) between Date (2000-01-01) AND Datetime (2050-01-01))

以及所有其他可能的组合。我到底做错了什么,是我愚蠢,还是文档在撒谎,或者我错过了一些非常重要的事情?试图找到解决方案几个小时,但没有任何效果......

最佳答案

如果您将日期存储为格式中的字符串

YYYY-MM-DD HH:mm:ss  

====> 那么您的日期字段是 DateTime 数据类型

因此你必须使用这样的查询

select * 
from MyTable
where mydate >= Datetime('2000-01-01 00:00:00')
and mydate <= Datetime('2050-01-01 23:00:59')

您也可以使用@Joop Eggen 给出的 fragment 与运算符之间的th 相同的方法。

BETWEEN 运算符在逻辑上等价于一对比较。 "x BETWEEN y AND z" 等价于 "x>=y AND x<=z",但使用 BETWEEN 时,x 表达式只计算一次。见 sqlite3 docs

关于android - 比较android sqlite数据库中的日期(存储为字符串)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10832864/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com