2010-04-30 51 views

回答

2

您需要将日期存储在数据库中的某一列中。在我的应用程序中,我使用timeIntervalSinceReferenceDate将NSDate(显然是iPhone)转换为双精度数据存储在数据库中。鉴于我可以查询日期范围。

我编写函数计算过去/未来的午夜X天的NSDate,我用它来确定查询的startDate和endDate。下面是该代码的摘录,会给你一些想法:

char selectQuery[MAX_STR]; 
sprintf(selectQuery, "SELECT DateTime FROM Journal WHERE DateTime >= %f AND DateTime < %f;", 
        [startDate timeIntervalSinceReferenceDate], 
        [endDate timeIntervalSinceReferenceDate]); 

我不想的NSDate转换为日期时间字符串,因为我不信任转换来回所有不同的时区和不同语言环境的日期格式。

+0

这是java的实际查询:select * from table_name where strftime('%Y-%m-%d',field_name)> = date('now',' - 6 days')和strftime('%Y- %m-%d',field_name)<= date('now')order by field_name desc; – Praveen 2010-04-30 14:37:37

1

sqlite不会跟踪添加表格行的时间。如果您需要此行为,则应添加时间戳列,并在插入新行时设置当前时间。

+0

我可以使用between子句吗?我的意思是从当前日期和当前日期-7之间的列名选择*从表名顺序; – Praveen 2010-04-30 12:33:18

+0

在sqlite中不存在。你可以做SELECT * FROM tablename WHERE columnname> currentdate - 60 * 60 * 24 * 7 ORDER BY columnname。您应该查看sqlite语法:sqlite.org/lang.html。我假设您将日期存储为UNIX时间戳 – 2010-04-30 13:07:13

+0

BETWEEN * does *存在于SQLite中。 – dan04 2010-05-01 04:46:37