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

比较android sqlite数据库中的日期(存储为字符串)?,android,sqlite,date,Android,Sqlite,Date,我在数据库中将日期存储为String,格式如下: YYYY-MM-DD HH:MM:SS 哪种是受支持的格式之一()。现在,我想将这些存储的日期(嗯,字符串)与其他日期进行比较。我的日期存储在列列\u date中,因此我正在尝试以下方法: SELECT * FROM MyTable WHERE (Date(column_date) >= Date (2000-01-01) AND Datetime(column_date) <= Datetime (2050-01-01))

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

YYYY-MM-DD HH:MM:SS
哪种是受支持的格式之一()。现在,我想将这些存储的日期(嗯,字符串)与其他日期进行比较。我的日期存储在列
列\u date
中,因此我正在尝试以下方法:

SELECT  * FROM MyTable
WHERE 
(Date(column_date) >= Date (2000-01-01) AND Datetime(column_date) <= Datetime (2050-01-01))
这(使用between而不是=)

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

SELECT *
FROM MyTable
WHERE 
    column_date BETWEEN '2000-01-01 00:00:00' AND '2050-01-01 23:00:59'
我们应该做到这一点。这只使用字符串,但你说这很合适


错误是缺少时间部分或未仅对日期部分执行substr。然后,数据/时间转换函数也可能给出错误的结果。

我认为您的问题就在这里

AND Datetime(column_date) <= Datetime (2050-01-01))

和Datetime(column_date)=日期(2000-01-01)和日期(column_date)如果将日期存储为格式中的字符串

YYYY-MM-DD HH:mm:ss  
=>那么您的日期字段是日期时间数据类型

因此,您必须使用这样的查询

select * 
  from MyTable 
  where mydate >= Datetime('2000-01-01 00:00:00') 
  and mydate <= Datetime('2050-01-01 23:00:59')
选择*
从MyTable
其中mydate>=日期时间('2000-01-01 00:00:00')

在SQLite表中提交的MyDea

日期将是文本和日期数据应存储为“2012-123:12:1200”格式,比较剂量不会给您带来麻烦,如果我们认为字段是DATEYON和DATEYTO,并且我们将当前日期存储在ToDo日期,那么我们应该得到当前日期为BELL和

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String to_date = sdf.format(new Date());
SQL查询应该是

    crs = db.rawQuery(
      "SELECT _id, date_from, date_to, done_or_not, list_name " +
      "FROM list_tbl " +
      "WHERE " +
      "date_from <= Datetime('"+to_date+"') AND date_to >= Datetime('"+to_date+"')", null);
crs=db.rawQuery(
选择_id、日期_from、日期_to、完成或未完成、列表_name+
“从列表\u tbl”+
“哪里”+
“date_from=Datetime(“+to_date+”)”,空);
比较android SQLite数据库中的日期(存储为字符串)。以
12/07/2015
格式使用日期,并使用如下查询:

SELECT * FROM tableName WHERE Date >=('12/07/2015') and appointmentDate <('13/07/2015')";

从日期>=('12/07/2015')的tableName中选择*和任命日期这项工作……但如何可能呢?你在比较字符串和日期函数(介于两者之间)?我以为列\U date是一个字符串-VARCHARS?但是日期时间也可以,因为标准的*2000-01-01T00:0:00'和'2000-01-01 00:00:00'也是可转换的。我们可以检查这个日期01-01-2011 00:00:00吗?@PintuCorna
'2011-01-01 00:00:00'
应该是。或使用
T
代替空格,以遵守官方ISO标准。奇怪的是,dd-MM-yyyy是一个标准(在荷兰仍在使用),但中性独特的yyy-MM-dd现在受到青睐。使我对世界语和其他努力感到乐观。BETWEEN是最佳的,因为它可以使用有序索引。在日期“…”之间也可以看到,最好键入。我不相信这是正确的。。。在SQLite文档中,“date()函数以以下格式返回日期:YYYY-MM-DD”。按照我的理解,这意味着即使数据以日期时间格式存储,使用
Date()
也只返回数据的日期部分。这不对吗?这是可行的,但仍然无法理解。在文档中,它清楚地标明了该日期或datetime返回日期。我的列是string。那么,您如何能够将字符串(=mydate)与日期(使用datetime函数从字符串2000-01-01 00:00:00创建的日期)进行比较呢?这不符合逻辑。为什么你不把Datetime也应用到我的列,如果它是字符串的话?所以事实上,对我来说这在逻辑上是正确的:Datetime(mydate string)SQLite没有一个存储类来存储日期和/或时间!!请看官方文档,您将Sqlite引用到Sql,我认为这让您感到困惑,Sqlite不支持日期格式,只支持将日期存储为字符串或real格式。应用程序可以选择以这些格式中的任何一种存储日期和时间,并使用内置的日期和时间函数在格式之间自由转换。你选择的比较日期就是比较字符串!!这只适用于本月,更改月后不起作用。
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String to_date = sdf.format(new Date());
    crs = db.rawQuery(
      "SELECT _id, date_from, date_to, done_or_not, list_name " +
      "FROM list_tbl " +
      "WHERE " +
      "date_from <= Datetime('"+to_date+"') AND date_to >= Datetime('"+to_date+"')", null);
SELECT * FROM tableName WHERE Date >=('12/07/2015') and appointmentDate <('13/07/2015')";