我的Android应用程序中有一个SQLite数据库,它将日期存储为整数。这些整数来自对Java.util.Date.getTime();
的调用。我正在尝试运行我的数据库的原始查询以获取Cursor传递给CursorAdapter并显示在ListView中,但日期存储为getTime()
返回的整数。
为了简化程序,我想避免使用SimpleArrayAdapter,并坚持使用CursorAdapter。
是否有可能将日期列中的整数格式化为mm-dd-yyyy
,以便光标所指向的表的列包含格式正确的值,而不是{{返回的整数'。 1}}当我将项目添加到数据库中时?
答案 0 :(得分:9)
SELECT strftime("%m-%d-%Y", date_col, 'unixepoch') AS date_col
如果您的代码需要一个名为date_col的格式的结果集列,那么您的代码将会正常工作。
编辑:需要注意的一件事是getTime自1970年以来使用毫秒,而标准UNIX时间(包括SQLite)使用秒。
答案 1 :(得分:5)
Java.util.Date.getTime();
方法返回一个表示“unix time”的整数。
将此数字作为日期读取的最简单方法是按原样存储,并使用以下Sqlite查询读取它:
SELECT strftime('%m-%d-%Y', 1092941466, 'unixepoch');
返回:
08-19-2004
如果您需要其他格式,可以使用strftime
功能进行格式化,也可以使用任何其他日期格式和功能。
正如Matthew Flaschen在下面的推荐中指出的那样,你必须将日期除以1000才能以这种方式使用它们。 “真实”unix时间以纪元为单位以秒为单位进行测量,Java.util.Date.getTime();
自纪元以来返回毫秒。
答案 2 :(得分:2)
SQLite使用静态刚性输入。使用静态类型,值的数据类型由其容器(存储值的特定列)确定。
存储在SQLite数据库中的任何值都具有以下存储类之一:
因此我不确定but the date is stored as a long, unhelpful integer.
有关详细信息,请参阅 Datatypes In SQLite Version 3 。有关在SQLite中存储日期/时间的更多信息,请参阅 SQL As Understood By SQLite 。
我希望这会有所帮助。