【问题标题】:SQL Statement to get last week, month and year records获取上周、月、年记录的SQL语句
【发布时间】:2014-10-31 05:53:05
【问题描述】:

我在尝试从 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 语句以获取 last 周、月和年。有什么想法吗?

提前致谢。

【问题讨论】:

  • 检查此参考sqlite.org/lang_datefunc.html。以及如何格式化日期时间字符串以使用日期时间函数。
  • 顺便说一下,SQLite 不支持 strftime() 因为它会使程序没有响应
  • strftime() 如果你使用得当,效果会很好。
  • 但我不知道如何在我的情况下实施它,因为我已经尝试过了,但它不起作用
  • 首先尝试像 YYYY-MM-DD 这样格式化您的日期字段,然后您可以尝试使用日期时间函数或使用 > AND 的 where 语句

标签: java android sql sqlite datetime


【解决方案1】:

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

... BETWEEN date('now', '-14 days') AND date('now', '-7 days')
... BETWEEN date('now', 'start of month', '-1 months') AND date('now', 'start of month', '-1 days')
... BETWEEN date('now', '-2 years') AND date('now', '-1 years')

【讨论】:

  • 它适用于最后一周和第一年,但不适用于当月。你有什么想法吗?
  • 你有什么想法让最后一个月因为它不起作用:(
  • select date('now', '-1 months');2014-08-06。究竟什么不起作用?
  • 当我将 BETWEEN Date('now', '-2 month') AND Date('now', '-1 month') 放在八月应该显示但它返回的唯一记录我清空结果
  • 您展示的示例数据中没有这样的记录。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-18
  • 2019-10-16
相关资源
最近更新 更多