2012-06-02 38 views
0

我想從SQLite數據庫檢索具有它們的「今日」start_time事件的列表。 start_time包含時間戳,例如像這樣1338613200000SQLite日期 - 從今天發現事件

我嘗試這樣做:

SELECT * FROM events WHERE DATE(start_time)=CURDATE();

SELECT * FROM events WHERE date(start_time, 'unixepoch')=date('now')

不工作...

我在MySQL這樣的語句來實現同樣的事情編輯: 這是問題w我的時間戳。他們有三個零太多

+0

現在我可以看到,我的時間戳是幾個零太長......這似乎是問題所在。我的第一次嘗試是對的,只是時間戳錯了。無論如何,我希望這個聲明將幫助至少有人至少 –

+0

CURDATE()會給你日期,而不是時間。而且我認爲你的start_time值有日期+時間(YYYY-MM-DD-HH-MM-SS)比較不同bcoz只是日期匹配和時間沒有。 – Viking

+0

由於DATE()也只給出日期(就像CURDATE()一樣,所以MySQL語句可以工作,但是我們不要偏離主題:) –

回答

1

Java自Unix時代起使用毫秒,而我猜SQLite使用秒。

在查詢數據庫之前,將System.currentTimeMillis()除以1000。

+0

現在你寫了,它似乎很明顯......我昨天真的很困 –

0

你可以嘗試這樣的事情:

SELECT * FROM events 
WHERE datetime(start_time,'unixepoch', 'localtime') 
BETWEEN DATE('now') AND DATE('now', '+1 day') 

here

+0

我使用了這些文檔。我會立即嘗試你的解決方案。謝謝 –

+0

不幸的是它不起作用 –

0

詳情嘗試

Calendar c= Calendar.getInstance(); 
long l=c.getTimeInMillis(); 

,並做類似如下:

SELECT * FROM events WHERE start_time=l; 

看看是否有效。

+0

沒有。沒有這樣的函數作爲NOW()在sqlite –

+0

對不起,我想在MySql方面。我編輯了我的答案請檢查它是否工作。 – Viking

+0

感謝您的幫助,請參閱上面的評論,這就是爲什麼我有問題。在插入的某個地方,一些零會被添加到我的時間戳中,它大約在44800年...我的第一個方法使用正確的時間戳,我相信你的工作也會太快 –