如何使查询仅从数据库中检索时间等于“今天”的记录。我将日期存储为文本(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');
但没有工作..
答案 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。请正确报告问题,例如日志,错误等。但没有工作.. 并未指明您的确切问题。