使用日期格式从SQL数据库输出特定行

时间:2012-03-30 11:41:26

标签: android sql eclipse date

我正在编写一个应用程序,用户可以在SQLite数据库中输入一些细节。我需要编写代码,输出数据库中存储数据的最后31天。

保存日期字符串的代码是: currentDateString = DateFormat.getDateInstance()。format(new Date());

以日期(2012年3月30日)的格式提供日期格式。

是否有将此数据格式更改为DD / MM / YYYY? (30/03/2012)

此字符串将保存到SQL数据库中,如下所示:

ContentValues dbcv = new ContentValues(); dbcv.put(KEY_DATE,date);

(currentDateTime String =上一课程中的日期)

我希望输出过去31天内数据库的每一行。

我该怎么做?

谢谢!

1 个答案:

答案 0 :(得分:1)

首先,你只是在一个问题上做两个问题,我会尽力给你一个答案。

  1. 要更改java中的日期格式,请查看SimpleDateFormat的文档,您可以将模式传递给该类的构造函数,以便按照您真正想要的方式格式化日期。在您的具体情况下,您要查找的模式是dd/MM/yyyy
  2. 如果您将数据库中的日期存储为字符串,则会失去保存日期的一些好处。例如,如果您在表中存储日期而不是字符串,则可以轻松执行第二个问题,因为您需要实现所需的唯一操作是使用提供的日期函数对表执行select操作通过SQLLite。看一下这个网页,因为它可以让您了解如何使用这些功能:SQLLite Date Functions
  3. 注意:当然,如果您仍想将它们存储为字符串,那么您将拥有的唯一解决方案是读取所有记录,将所有字符串解析回日期并使用{{1} } class来检查哪个记录超过31天,哪个记录不是。我宁愿做SQL查询而不是它,因为它有更好的性能(特别是在移动设备上)。

    修改

    SQLLite和Android并不是我的优势,我做了一个小小的研究,我找到了几个帖子,其中人们实际上将它们存储为你最初开始做的字符串。如果Android上的SQLLite不支持按原样存储日期(与其他数据库一样),那么您的方案中的最佳选项可能是使用java.util.Calendar值作为日期。查看Date定义类,它有一个方法long,它将日期值作为long值返回,您可以稍后使用该值创建日期的新实例(使用其构造函数)。 / p>

    要在用户可读的内容中格式化该日期(当然是getTime对象),Date(或其任何实现)仍然是答案。

    要执行您希望将日期存储为多久的查询,建议您查看DateUtils中的Apache Commons Lang library类。在该类中,您将找到几个适用于日期的函数,因此,在创建查询之前,您需要获取最近31个日期中的行,您可以使用以下内容:

    DateFormat

    希望这有帮助。