Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获取上周、月份和年份记录的SQL语句_Java_Android_Sql_Sqlite_Datetime - Fatal编程技术网

Java 获取上周、月份和年份记录的SQL语句

Java 获取上周、月份和年份记录的SQL语句,java,android,sql,sqlite,datetime,Java,Android,Sql,Sqlite,Datetime,我在试图从SQLite数据库中获取上一周、月和年的记录时遇到了一些问题。我的数据库表: 我只获得了今天、昨天、本周、本月和今年的记录 本周: SELECT SUM(amount) AS Total, (substr(date, 7, 4) || '-' || substr(date, 4, 2) || '-' || substr(date,1, 2)) AS currentDate FROM TransactionRec WHERE currentDate BETWEEN DATE('now

我在试图从SQLite数据库中获取上一周、月和年的记录时遇到了一些问题。我的数据库表:

我只获得了今天、昨天、本周、本月和今年的记录

本周:

SELECT SUM(amount) AS Total, (substr(date, 7, 4) || '-' || substr(date, 4, 2) || '-' || substr(date,1, 2)) AS currentDate FROM TransactionRec WHERE  currentDate BETWEEN DATE('now', '-7 days')  AND Date('now') GROUP BY currentDate
本月:

SELECT SUM(amount) AS Total, (substr(date, 7, 4) || '-' || substr(date, 4, 2) || '-' || substr(date,1, 2)) AS currentDate FROM TransactionRec WHERE  currentDate BETWEEN DATE('now', 'start of month') AND Date('now')  GROUP BY currentDate
今年:

SELECT SUM(amount) AS Total, (substr(date, 7, 4) || '-' || substr(date, 4, 2) || '-' || substr(date,1, 2)) AS currentDate FROM TransactionRec WHERE  currentDate BETWEEN DATE('now', '-1 year')  AND Date('now')GROUP BY currentDate
但是我不知道如何修改SQL语句以获得上一个星期、月份和年份。有什么想法吗


提前感谢。

您已经在使用日期修改器了。 只需再减去一周/月/年:

。。。日期('now','14天')和日期('now','7天')之间
... 日期(‘现在’、‘月初’、‘1个月’)和日期(‘现在’、‘月初’、‘1天’)之间
... 日期(‘现在’,‘2年’)和日期(‘现在’,‘1年’)之间

检查此参考。以及使用日期时间函数需要如何格式化日期时间字符串。顺便说一下,SQLite不支持strftime(),因为它会使程序不响应如果使用正确,效果很好。但我不确定如何在我的情况下实现它,因为我已经尝试过了,但它不起作用。首先,请尝试像YYYY-MM-DD这样格式化您的日期字段,然后您可以尝试使用日期时间函数或where语句,使用>,它适用于最后一周和第一年,但不适用于当月。你有什么想法吗?你有没有想法得到最后一个月的一个,因为它不起作用:(
select date('now','-1个月);
2014-08-06
。到底什么不起作用?当我在日期('now','2个月')和日期('now','1个月')之间输入8月份应该显示的唯一记录,但它返回空结果。在您显示的示例数据中没有这样的记录。