2013-08-28 100 views
1

我試圖從表中檢索不同日子的列表。它們存儲在整數中。Sqlite組日期日期

cal.getTime().getTime() 

返回自1970年1月1日,通過此Date對象表示00:00:00 GMT毫秒數。

我已經寫

select strftime('%d-%m-%Y'," + date_clmn + ") from " 
       + TABLE_NAME +" group by strftime('%d-%m-%Y'," + date_clmn + ")" 

接下來,我將這些值的toString。 我能得到什麼:

24-11--471 

而在此之後,當我試圖讓查詢與

strftime('%d-%m-%Y',date_clmn)=24-11--471 

我什麼也沒得到。

怎麼了?

我會用這種方式遇到時區問題嗎?

如果還有其他方法可以做到,我很樂意聽到您的聲音。

在此先感謝。

UPDATE

Tried "date(" + date_clmn+ ",'unixepoch')" 
now retrieved value is "1970-01-01" 
+1

我想比較一下ld是'strftime('%d-%m-%Y',date_clmn)= '24 -11--471'。只需將'24-11--471'用單引號括起來,因爲你需要比較兩個字符串,並且顯然sqlite沒有檢測到這種類型的不匹配,即使查詢完美運行,但它當然不會檢索任何行。如果它有效,你同意我可以提交這個答案。 – dic19

+1

謝謝,它也在那裏!@ dic19 – userqwerty1

+0

你是惠康:) – dic19

回答

2

既然你不存儲在表的日期,你需要改變你的領域。試試這段代碼:

"select strftime('%d-%m-%Y'," + date_clmn + "/1000,'unixepoch') from " 
+ TABLE_NAME +" group by strftime('%d-%m-%Y'," + date_clmn + "/1000,'unixepoch')" 
+0

謝謝,它的作品! – userqwerty1

2

我加了這個,因爲我認爲這可能對某人有幫助。按照documentationstrftime()返回給定格式的字符串日期。因此,在這個子句:

strftime('%d-%m-%Y',date_clmn) = 24-11--471 
    ^       ^
    string       this expression returns an integer 

這裏有一個類型不匹配SQLite不檢測。即使查詢將完美運行(我測試它並運行沒有錯誤),但它當然不會檢索任何行。

右comparisson是:

strftime('%d-%m-%Y',date_clmn) = '24-11--471' 

測試:這裏有一個小的一段代碼來測試此行爲:

CREATE TABLE dateTest(myDate VARCHAR); 
INSERT INTO dateTest(myDate) VALUES ('2013-08-29 18:57:00'); 
SELECT strftime('%Y-%m-%d',myDate) AS formatted, myDate FROM dateTest WHERE strftime('%Y-%m-%d') = 2013-08-29; /* this won't retrieve any row */ 
SELECT strftime('%Y-%m-%d',myDate) AS formatted, myDate FROM dateTest WHERE strftime('%Y-%m-%d') = '2013-08-29'; /* this will retrieve '2013-08-29 | '2013-08-29 18:57:00' */ 

而這裏的輸出:

enter image description here