Android 如何在sqlite数据库中添加日期

Android 如何在sqlite数据库中添加日期,android,database,sqlite,date,Android,Database,Sqlite,Date,我有sqlite数据库 private static final String DB_PROCESS_CREATE = "create table " + DB_TABLE_PROCESS + "(" + PROCESS_ID + " integer primary key autoincrement, " + PROCESS_DATE + " date);"; 我创建它db.execSQL(db\u PROCESS\u create)

我有
sqlite数据库

    private static final String DB_PROCESS_CREATE = "create table "
        + DB_TABLE_PROCESS + "(" + PROCESS_ID
        + " integer primary key autoincrement, "
        + PROCESS_DATE + " date);";
我创建它
db.execSQL(db\u PROCESS\u create)

如何在此数据库中添加日期值? 我试过:

String date = new SimpleDateFormat("yyyy.MM.dd").format(Calendar
.getInstance().getTime());
ContentValues cv = new ContentValues();
cv.put(db.PROCESS_DATE,Date.valueOf(date));
db.mDB.insert(db.DB_TABLE_PROCESS, null, cv));
但是我得到了
错误

"The method put(String, String) in the type ContentValues is not applicable for the arguments (String, Date)".

将日期放入数据库的最佳方法是使用它的长值。我试着做你正在做的事情,但也有类似的错误。输入一个数值,而不是字符串。它可以取长值,我相信这是某种毫秒值。然后,当您将其拔出时,可以将其重新转换。

现在,当您要将日期插入数据库时,可以使用此代码

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String date = sdf.format(new Date());
在数据库中插入字符串“date”

sqlite中的日期格式应为以下格式:

YYYY-MM-DD
YYYY-MM-DD HH:MM
YYYY-MM-DD HH:MM:SS
YYYY-MM-DD HH:MM:SS.SSS
YYYY-MM-DDTHH:MM
YYYY-MM-DDTHH:MM:SS
YYYY-MM-DDTHH:MM:SS.SSS
HH:MM
HH:MM:SS
HH:MM:SS.SSS
now
DDDDDDDDDD 

有关更多详细信息,请查看:

您不能直接在SQLite中存储日期。例如,可以将其存储为整数值:

ContentValues cv = new ContentValues();
cv.put(db.PROCESS_DATE, new Date().getTime());
db.mDB.insert(db.DB_TABLE_PROCESS, null, cv));
在这种情况下,日期字段必须声明为整数:

private static final String DB_PROCESS_CREATE = "create table "
        + DB_TABLE_PROCESS + "(" + PROCESS_ID
        + " integer primary key autoincrement, "
        + PROCESS_DATE + " integer);";
从SQLite文档: SQLite没有为存储日期和/或时间而预留的存储类。相反,SQLite的内置日期和时间函数能够将日期和时间存储为文本、实数或整数值:

  • 文本作为ISO8601字符串(“YYYY-MM-DD HH:MM:SS.SSS”)
  • REAL作为朱利安 day number,自11月12日格林威治中午以来的天数 公元前244714年,根据公历公历
  • 整数 作为Unix时间,自UTC 1970-01-01 00:00:00以来的秒数。 应用程序可以选择将日期和时间存储在其中任何一个中 格式,并使用内置日期在格式之间自由转换 和时间函数

  • 请看

    我考虑过,但是我会按日期查找记录,如果我像长值一样存储日期,这将很困难。您可以提取这些值并检查它们,但这有点低效。你可以把日期的一部分做成另一张表,比如当天,然后通过这种方式进行搜索。代码的另一个问题可能是,您正在执行Date.valueOf()操作,而不仅仅是存储日期。试试看。Valueof实际上是在数据库需要字符串时返回日期数据类型。在数据库中存储日期时,最好将长值存储在DB中,因为长值始终为UTC。这使您有机会始终向用户显示其当前时区中的日期。好的,但如何按日期查找记录?如果我不知道时间,我只知道记录的日期。你可以把所有的日期都拉出来,循环浏览,只要不会有几千个。我试过了,但在这种情况下,不可能进行排序date@KostyaKhuta试试这个,这个应该有用。让类型PROCESS_DATE为DATE。“构造函数日期()未定义”我必须传输到构造函数的内容按Ctrl+Shit+O自动导入缺少的包或导入java.util.DATE;我的boner,在我的类中,我导入java.sql.Date=)类似: