2013-11-10 87 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格式。

相关问题