2013-03-26 72 views
2

我的日期欄是整型的即將到來的生日排序我試圖將解決方案轉換成SQLite語法,但沒有運氣。 任何人都想把我推向正確的方向?SQLite的查詢,基於當前的日期

我甚至能夠得到例如每月時間戳:

strftime('%m', birthday) //unexpected value (dec = 1, jan = 1, jan = 6) 
strftime('%m', 'now') // as expected (mar = 3) 

任何幫助表示讚賞。

UPDATE 好了,現在我已經真正創造了一個爛攤子:

cur = db.rawQuery("SELECT " 
         + "(strftime('%Y','now') - strftime('%Y',datetime(("+BIRTHDATE+"/1000), 'unixepoch', 'localtime'))) AS age," 
         + "date((" + BIRTHDATE + "/1000),'+' || age || ' year') AS currbirthday," 
         + "date((" + BIRTHDATE + "/1000),'+' || age+1 || ' year') AS nextbirthday" 
        + " FROM " + TABLE 
        + " ORDER BY CASE" 
         + " WHEN currbirthday < date('now') THEN nextbirthday" 
         + " ELSE currbirthday" 
        + " END", null); 

錯誤: 「沒有這樣的列時代」

好了,好了,我試圖把整個表達式計算「時代「在裏面的concat,但結果卻是陌生的(年齡存儲正確的值):

Log.d("bdate", contact.getFirstname() + ": currbday=" + cur.getString(1)); 
Log.d("bdate", contact.getFirstname() + ": nextbday=" + cur.getString(2)); 

Samantha: currbday=-5705--6--29

Samantha: nextbday=-5704--6--29

有什麼建議嗎?

+0

什麼是整數值的含義* *? SQLite將數字解釋爲Julian日期數字,或者用'unixepoch'修飾符作爲秒數。 – 2013-03-26 07:45:55

+0

整數值的含義是unixtime。恢復日期: Date myDate = new Date(longFromDb); – msfoster 2013-03-26 23:52:52

+0

我的問題是我存儲了毫秒,這實際上不是unixtime。 strftime('%m',日期(生日/ 1000))給了我正確的輸出。 – msfoster 2013-03-27 01:38:18

回答

1

萬一有人懷疑,這是我的解決方案:

cur = db.rawQuery("SELECT " 
         + "date(strftime('%Y', 'now','localtime')||strftime('-%m-%d', datetime(("+BIRTHDATE+"/1000), 'unixepoch', 'localtime'))) as currbirthday," 
         + "date(strftime('%Y', 'now','localtime')||strftime('-%m-%d', datetime(("+BIRTHDATE+"/1000), 'unixepoch', 'localtime')),'+1 year') as nextbirthday" 
        + " FROM " + TABLE 
        + " ORDER BY CASE" 
         + " WHEN currbirthday < date('now') THEN nextbirthday" 
         + " ELSE currbirthday" 
        + " END", null); 
+0

你把日期保存爲什麼? Unix時間戳?你如何在今天的日期之前添加日期?請幫忙!! – Skynet 2013-12-11 12:51:46

+0

日期列的類型是整數。是的,unix時間戳。關於「你是怎麼添加日期的?」這個問題,我不知道你在問什麼。 – msfoster 2013-12-15 20:06:07

+0

我的意思是查詢,我在這裏提出了一個問題,得到了不少優雅的解決方案。 http://stackoverflow.com/questions/20320925/ordering-of-dates-and-retrieving-results-based-on-current-date-birth-day-list – Skynet 2013-12-16 11:04:29