如何在SQLite中查询日期等于今天?

时间:2018-01-11 09:16:26

标签: android sqlite time android-sqlite

如何使查询仅从数据库中检索时间等于“今天”的记录。我将日期存储为文本(yyyy-MM-dd HH:mm:ss)?

以下是我的表格的样子:

// TABLE EVENT
private static final String TABLE_EVENT = "event";
private static final String TABLE_EVENT_ID = "_id";
private static final String TALBE_EVENT_START_TIME = "start_time";
private static final String TALBE_EVENT_END_TIME = "end_time";
private static final String TALBE_EVENT_NOTE= "note";

  private static final String CREATE_TABLE_EVENT = "CREATE TABLE "
        + TABLE_EVENT + " ("
        + TABLE_EVENT_ID + " integer primary key autoincrement, "
        + TALBE_EVENT_START_TIME + " text not null, "
        + TALBE_EVENT_END_TIME + " text not null, "
        + TALBE_EVENT_NOTE + " text not null"
        +");";

我试过

SELECT * FROM event WHERE event.start_time = DATE('now');

但没有工作..

4 个答案:

答案 0 :(得分:3)

private static final String CREATE_TABLE_EVENT = "CREATE TABLE "
        + TABLE_EVENT + " ("
        + TABLE_EVENT_ID + " integer primary key autoincrement, "
        + TALBE_EVENT_START_TIME + " text not null, "
        + TALBE_EVENT_END_TIME + " text not null, "
        + TALBE_EVENT_NOTE + " text not null"
        +");";

用此替换Create table query,它应该可以正常工作。

您在笔记的末尾添加了额外的逗号。

答案 1 :(得分:0)

要解决此问题,我将日期存储为YYYYMMDDHHmmss。从而,    where mydate = '20180111000000' and mydate <= '20180111000000' and mydate >= '20180111000000'

它一直都很简单。您可能只需要编写一个解析器来处理用户输入日期的方式,以便将它们转换为YYYYMMDDHHmmss

注意最后6个零表示HHmmss

或者如果您只想使用日期功能,请参阅此link

答案 2 :(得分:0)

如果您希望按日期时间获取,则列格式应为

TALBE_EVENT_START_TIME +&#34; DATETIME,&#34;不在文字和

SELECT * FROM event WHERE event.start_time = Datetime(&#39; now&#39;);

答案 3 :(得分:0)

您的查询无效,因为数据库中的日期存储为 yyyy-MM-dd HH:mm:ss ,而SQLite DATE函数返回日期格式 yyyy -MM-dd 也在Universal Coordinated Time (UTC) 中。

因此,如果您想将event.start_time与当前日期进行比较,请将您的日期存储为 yyyy-MM-dd 格式,并将查询运行为:

SELECT * FROM event WHERE event.start_time = DATE('now', 'localtime');

localtime以补偿您当地的时区。

P.S。请正确报告问题,例如日志,错误等。但没有工作.. 并未指明您的确切问题。