在SQLite select语句中将整数格式化为格式化日期

fin*_*oop 5 sqlite android

我的Android应用程序中有一个SQLite数据库,它将日期存储为整数.这些整数来自于调用Java.util.Date.getTime();.我正在尝试运行我的数据库的原始查询以获取Cursor传递给CursorAdapter并在ListView中显示,但日期存储为返回的整数getTime().

为了简化我的程序,我想避免使用SimpleArrayAdapter,并坚持使用CursorAdapter.

是否有可能在日期mm-dd-yyyy列中格式化整数,以便光标所指向的表的列包含格式正确的值,而不是Java.util.Date.getTime();我将项添加到数据库时返回的整数?

Mat*_*hen 10

SELECT strftime("%m-%d-%Y", date_col, 'unixepoch') AS date_col
Run Code Online (Sandbox Code Playgroud)

如果您希望该格式的结果集列名为date_col,那么您的代码将起作用.

编辑:您需要注意的一件事是,自1970年以来,getTime使用毫秒,而标准UNIX时间(包括SQLite)使用秒.


Ezr*_*zra 5

Java.util.Date.getTime();方法返回一个表示" unix time " 的整数.

将此数字作为日期读取的最简单方法是按原样存储,并使用以下Sqlite查询读取它:

SELECT strftime('%m-%d-%Y', 1092941466, 'unixepoch');
Run Code Online (Sandbox Code Playgroud)

返回:

08-19-2004
Run Code Online (Sandbox Code Playgroud)

如果您需要其他格式,可以根据需要使用strftime格式化功能,也可以使用任何其他日期格式和功能.

正如Matthew Flaschen在下面的推荐中指出的那样,你必须将日期除以1000才能以这种方式使用它们."真实"unix时间以纪元为单位以秒为单位进行测量,并Java.util.Date.getTime();返回自纪元以来的毫秒数.