如何在sqlite数据库中插入数据类型日期(yyyy-MM-dd)并在android中的两个日期之间检索数据

chi*_*mbu 3 java sqlite android

我有一个Sqlite3数据库表,包含姓名,地址,出生日期详情.我想显示1990-01-01到1995-01-01的详细信息.

但Sqlite3数据库仅存储以下数据类型.

TEXT
NUMERIC
INTEGER
REAL
NONE
Run Code Online (Sandbox Code Playgroud)

任何人都有一些提示来存储和检索日期格式数据..?

Bud*_*ius 5

根据我自己在Android中使用数据库做几个项目的经验,我的答案是:

不要将日期存储为字符串.决不!永远!将它们存储为Unix时间戳,并在运行时根据需要对其进行格式化.

这里重要的是要分开你有什么数据,什么是你的数据在屏幕上的表示.在数据库中存储数据的屏幕表示是错误的.

您始终将日期存储为INTEGER类型.

因此,例如,为了存储日期,您将存储该值 System.currentTimeInMilis

要在1990-01-01和1995-01-01之间进行选择,您将:

long val1 = new GregorianCalendar(1990, 01, 01).getTimeInMillis();
long val2 = new GregorianCalendar(1995, 01, 01).getTimeInMillis();
Run Code Online (Sandbox Code Playgroud)

然后你将SELECT在这两个值之间做正常的陈述.

yyyy-MM-dd您使用SimpleDateFormat该类时在屏幕上显示这些值:

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
long longDate = cursor.getLong(colNumber); // from the database
String stringDate = dateFormat.format(new Date(longDate));
Run Code Online (Sandbox Code Playgroud)