2013-11-10 85 views
0

我正在開發一個任務計劃程序/時間管理器應用程序,計算用戶在他的日常活動中花費多少時間。我需要從數據庫中存儲和檢索用戶活動的開始時間和結束時間。但是由於數據庫模式中有很多列,所以很難實現。我沒有看到處理這個問題的好方法。請提出一個更好的方法來做到這一點。如何在Android的Sqlite數據庫中存儲和檢索日期和時間

這裏是代碼

package com.example.timejanitor; 

import android.content.Context; 
import android.database.SQLException; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteDatabase.CursorFactory; 
import android.database.sqlite.SQLiteOpenHelper; 

public class Fixed_Task_Database extends SQLiteOpenHelper { 

    private static final int DATABASE_VERSION = 1; 
    private static final String DATABASE_NAME = "FixedTask.db"; 

    public Fixed_Task_Database(Context context, String name, 
      CursorFactory factory, int version) { 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 

    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 

     try { 
      db.execSQL("CREATE TABLE fixedtask(_id INTEGER PRIMARY KEY AUTOINCREMENT,taskName TEXT, sHour INTEGER, sMinute INTEGER,fHour INTEGER, fMinute INTEGER,taskDay INTEGER,taskMonth INTEGER, taskYear INTEGER)"); 
     } catch (SQLException e) { 
      e.printStackTrace(); 
     } 

    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 

     db.execSQL("DROP TABLE IF EXISTS fixedtask"); 
     onCreate(db); 
    } 

} 
+0

閱讀[documentation](http://www.sqlite.org/datatype3.html#datetime)。 –

回答

1

SQLite的文檔狀態:

SQLite沒有存儲類存儲日期和/或時間預留。相反,SQLite的內置日期和時間函數能夠將日期和時間存儲爲TEXT,REAL或INTEGER值:

TEXT作爲ISO8601字符串(「YYYY-MM-DD HH:MM:SS.SSS 「)。

作爲朱利安天數的實際數字,自中午4714年11月24日格林威治中午以來的天數。根據預測的公曆。

INTEGER as Unix時間,自1970-01-01 00:00:00 UTC以來的秒數。

應用程序可以選擇以任何格式存儲日期和時間,並使用內置日期和時間函數在格式間自由轉換。

你可以在你的程序中使用其中的任何一種。請注意,Java內部也使用long來表示日期時間值。它計算自1970-01-01 00:00:00 UTC以來的毫秒數,因此很容易轉換爲SQLite INTEGER格式。

相關問題