如何根据创建日期将数据过滤到星期,月份和年份到日期?

时间:2014-08-05 09:03:19

标签: java database date sqlite

我是java编程的新手,我遇到了以下问题。

我有一个数据库(SQLite3)表,其中一列是以字符串(文本)格式存储DATE的文本。由于某些原因,它必须是Text而不是类型Date(我甚至不知道Sqlite3是否支持日期数据类型)。

现在基于此文本日期,我想将表中的数据归档到:

 Week : how much data has been entered in the table in this week. 
          Week starts from monday and ends on sunday. 
          So when I filter on week , I want the all the entries that have been 
          entered from Monday to this day of the week.

 Similar results are expected when I want to filter data into month and year. 

需要一些关于如何做到这一点的指示。 ? 感谢。

2 个答案:

答案 0 :(得分:0)

我将举一个例子。你可以使用类似的技术月和年。请参阅http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html

SELECT * FROM yourtable WHERE yourTimestamp >= CURDATE() - LEAST(6, DAYOFWEEK(CURDATE())-2)

DAYOFWEEK()将星期日定为1,星期六定为7.如果命令在星期日运行会怎样?为了满足这个要求,使用了LEAST(6,...)。

答案 1 :(得分:0)

您可以在此处执行的操作是使用java.Util.Calendar库从代码的db层创建查询。

Calendar now = Calendar.getInstance();
int year = now.get(Calendar.YEAR);
int month = now.get(Calendar.MONTH); // Note: zero based!    
int dayofMonth = now.get(Calendar.DAY_OF_MONTH);  

但是从java层形成这个查询最棘手的部分是获取自一周的第一天起经过的天数, 为此您需要使用     int dayofWeek = calendar.get(Calendar.DAY_OF_WEEK);

//如果当天是星期日,那天= 1。星期六,天= 7。

以下函数可以返回一周中已用天数的String数组 -

String[] elapsedDaysOfWeek(String dayOfWeek,String dayofMonth)
{
int dayOfWeek=Int.ParseInt(dayOfWeek);
int dayOfMonth=IntParseInt(dayOfMonth);

String[] days=new String(dayOfWeek);

days[0]=dayOfMonth;
for (int i=1;i<dayOfWeek;i++)
days[i]=(dayOfMonth-i).ToString();

return days;
}

因此,如果您调用elapsedDaysOfWeek(5,25) - 您将获得{25,24,23,22,21}的结果 - 您可以使用ÍN'关键字在查询中使用此数组 - 例如{25,24,23,22,21}

中的substr(datetext,1,2)