2012-05-08 42 views
10

我這個表我的Android的SQLite數據庫:查詢,上週,上個月的SQLite

CREATE TABLE statistics (subject TEXT, hits INTEGER, fails INTEGER, date DATE) 

date字段存儲datetime('now', 'localtime')在每一個寄存器中。

現在我必須查詢顯示一些統計數據的最後一天,上週和上個月的寄存器。 我一直是這樣的

SELECT Timestamp, datetime('now', '-1 week') FROM statistics WHERE TimeStamp < datetime('now', '-1 week') 

SELECT * FROM statistics WHERE date BETWEEN datetime('now', localtime') AND datetime ('now', '-1 month') 

,我怎麼能做到這一點不工作:(

我看看通過在虛擬設備模擬器中簡單地轉發日期,查詢就可以了嗎?

謝謝!

+2

這裏有一個提示。本月的最後一天是下個月第一天的-1。 – JonH

+0

謝謝@JonH。我找到了解決方案,但暫時無法發佈。在幾個小時內,你們都會擁有它:) – luismiyu

回答

20

我找到了這個解決方案。我希望這個對你有用。

對於最後一天:

SELECT * FROM statistics WHERE date BETWEEN datetime('now', 'start of day') AND datetime('now', 'localtime'); 

上週:

SELECT * FROM statistics WHERE date BETWEEN datetime('now', '-6 days') AND datetime('now', 'localtime'); 

上個月:

SELECT * FROM statistics WHERE date BETWEEN datetime('now', 'start of month') AND datetime('now', 'localtime'); 
+0

沒有空間的'6天'!無法編輯它,它說編輯必須至少有6個字符 –

+0

在sqlite 3.9.1中,至少在'now'和'start ...'之間缺少一個'localtime'可能會導致意外的行爲。他們應該是'datetime('now','localtime','day of day')'作爲例子。 –

0

該代碼會帶來比前一週的記錄有望

SELECT * FROM order_master 
WHERE strftime('%Y-%m-%d',om_date) >= date('now','-14 days') AND 
strftime('%Y-%m-%d',om_date)<=date('now') order by om_date LIMIT 6 
+1

上週或以前*兩週* –

0
SELECT 
max(date(date, 'weekday 0', '-7 day')) WeekStart, 
max(date(date, 'weekday 0', '-1 day')) WeekEnd,date 
FROM table; 
2

此代碼應該讓你比上月

SELECT * 
FROM statistics 
WHERE date >= date('now','start of month','-1 month') 
AND date < date('now','start of month')