2013-10-06 33 views
1

我有一個簡單的表在我的數據庫:如何從SQLite的獲取日期值在Java中

CREATE TABLE [InformacjeZDziekanatu] (
    [_id] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, 
    [DataWstawienia] DATE NOT NULL, 
    [DataModyfikacji] DATE NOT NULL, 
    [Tresc] VARCHAR2 NOT NULL); 

在我的應用程序只有我想要做的是讓DataWstawienia列的值。 我使用這樣的方法:

try { 
    ResultSet result = stat.executeQuery("select * from InformacjeZDziekanatu order by _id desc limit 5"); 
    int id; 
    Date dataWst; 
    Date dataMod; 
    String tresc;    

    for(int j = 0 ; j < 5 ; j++) { 
      result.next(); 
      Object[] lista = new Object[4]; 
      id = result.getInt("_id"); 
      dataWst = result.getDate("DataWstawienia"); 
      dataMod = result.getDate("DataModyfikacji"); 
      tresc = result.getString("Tresc"); 
      lista[0] = id; 
      lista[1] = dataWst; 
      lista[2] = dataMod; 
      lista[3] = tresc; 
      dane[j] = lista; 

    } 
} 

DataWstawienia列所有時間都是今天的日期,但使用這種方法上面我得到的日期1970-01-01所有的時間。

我做錯了什麼?

+0

如何保存日期? 1970年意味着它被解釋爲0. – zapl

+1

我明白了!問題在於:dataWst = result.getDate(「DataWstawienia」); dataMod = result.getDate(「DataModyfikacji」);而不是我應該使用:result.getString(「DataWstawienia」);並將dataWst的類型更改爲String。現在一切正常。 – k4sia

+0

相同的問題:http://stackoverflow.com/questions/9829362/sqlite-current-timestamp-always-1970-01-01 – k4sia

回答

1

SQLIte沒有DATE數據類型。日期需要以整數形式存儲(自Unix Epoch常見以來的秒數)或ISO 8601次(例如2013-10-01T12:12:12)。如果你在你的SQLite模式中說DATE,你會將值存儲爲字符串。您將dateWst更改爲String的解決方案確認您將日期存儲爲字符串而不是內部日期類型。

相關問題