Android,日期的数据库查询选择参数
Android, database query selection argument of date
假设我正在访问 Android:
的 SMS 数据库
Uri uri = Uri.parse("content://sms/");
ContentResolver contentResolver = getContentResolver();
String[] projection = {"_id", "date"};
Cursor cursor = contentResolver.query(uri, projection, null, null, null);
我想要 select 比参考日期大 "date" 的行。我知道我需要使用 selection & selection 参数:
String selection = "date > ?";
long referenceDateMilli = SOME_VALUE;
//how to define select argument ?
String selectionArgument = ?
Cursor cursor = contentResolver.query(uri, projection, selection, selectionArgument, null);
定义日期参数值的最佳方法是什么?
日期以毫秒为单位存储在 SMS table 中,因此您只需确定给定日期和时间的值,并查询任何更大的日期和时间。获取日期值的最简单方法可能是使用 Calendar
。使用您给定的代码,以下将 return 自年初以来创建的所有消息(给或花一秒钟)。
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, 2015);
calendar.set(Calendar.MONTH, Calendar.JANUARY);
calendar.set(Calendar.DAY_OF_MONTH, 1);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
String[] selectionArgument = { String.valueOf(calendar.getTimeInMillis()) };
Cursor cursor = getContentResolver().query(uri, projection, selection, selectionArgument, null);
如果您发送短信数据,日期时间以毫秒为单位定义,因此您可以简单地使用
Calendar c = Calendar.getInstance();
long referenceDateMilli = c.getTimeInMillis();
String[] selectionArgument = {String.valueOf(referenceDateMilli)};
注意:这仅适用于短信。对于彩信,它是
long referenceDateMilli = c.getTimeInMillis()%1000;
String[] selectionArgument = {String.valueOf(referenceDateMilli)};
假设我正在访问 Android:
的 SMS 数据库Uri uri = Uri.parse("content://sms/");
ContentResolver contentResolver = getContentResolver();
String[] projection = {"_id", "date"};
Cursor cursor = contentResolver.query(uri, projection, null, null, null);
我想要 select 比参考日期大 "date" 的行。我知道我需要使用 selection & selection 参数:
String selection = "date > ?";
long referenceDateMilli = SOME_VALUE;
//how to define select argument ?
String selectionArgument = ?
Cursor cursor = contentResolver.query(uri, projection, selection, selectionArgument, null);
定义日期参数值的最佳方法是什么?
日期以毫秒为单位存储在 SMS table 中,因此您只需确定给定日期和时间的值,并查询任何更大的日期和时间。获取日期值的最简单方法可能是使用 Calendar
。使用您给定的代码,以下将 return 自年初以来创建的所有消息(给或花一秒钟)。
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, 2015);
calendar.set(Calendar.MONTH, Calendar.JANUARY);
calendar.set(Calendar.DAY_OF_MONTH, 1);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
String[] selectionArgument = { String.valueOf(calendar.getTimeInMillis()) };
Cursor cursor = getContentResolver().query(uri, projection, selection, selectionArgument, null);
如果您发送短信数据,日期时间以毫秒为单位定义,因此您可以简单地使用
Calendar c = Calendar.getInstance();
long referenceDateMilli = c.getTimeInMillis();
String[] selectionArgument = {String.valueOf(referenceDateMilli)};
注意:这仅适用于短信。对于彩信,它是
long referenceDateMilli = c.getTimeInMillis()%1000;
String[] selectionArgument = {String.valueOf(referenceDateMilli)};