2010-04-30 162 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