【问题标题】:select last month's data when the date column is a string当日期列是字符串时选择上个月的数据
【发布时间】:2025-12-21 08:45:15
【问题描述】:

我找到了上个月的收入总和。目前,我正在通过给出 where 条件进行过滤。 例如,如果我需要上个月的数据,则当前日期为“20191111”。我获取 10 月份数据的查询是

Select sum(revenue)
from Table 1
where date between '20191001' and '20191031'

注意:我的日期列是一个字符串。如何修改它以自动获取上个月的记录?

【问题讨论】:

  • 如何转换并使用转换后的日期获取上个月的记录
  • 实现此目的的最佳方法是修复列(因为架构现在确实损坏)改为使用日期/日期时间类型字符串类型。
  • 你用的是什么数据库?
  • AWS Athena 是我正在使用的数据库

标签: sql amazon-athena


【解决方案1】:

您快到了,尽管如果表中的日期列当前是字符串格式,我会考虑将该列转换为日期数据类型,然后使用大于和小于比较而不是 between 子句。

尝试以下方法:

SELECT SUM(revenue)
FROM Table 1
WHERE CAST(date AS DATE) >= '20191001' AND CAST(date AS DATE) < '20191101'

要自动获取上个月的收入,或截至当前日期当月的总收入,您可以使用以下内容:

获取最近几个月的收入:

SELECT SUM(revenue)
FROM Table 1
WHERE MONTH(CAST(date AS DATE)) < (MONTH(GETDATE()) - 1) 
AND MONTH(CAST(date AS DATE)) > (MONTH(GETDATE()) - 2)

【讨论】:

    最近更新 更多