【问题标题】:MySQL get records between now and a month last yearMySQL 从现在到去年一个月之间获取记录
【发布时间】:2015-05-21 13:11:49
【问题描述】:

我正在尝试创建一个 SQL 查询来选择时间戳小于 NOW() 但大于去年 9 月的记录,但我不想通过输入以下内容来指定年份:

date > '01/09/2014'

如果我今天要运行查询,它应该给我来自以下的记录:

2014 年 9 月至 2015 年 5 月(5 月,因为它是创建此问题时的月份)

如果我明年运行它,它应该会给我来自的记录 2015 年 9 月至 2016 年 5 月(5 月,因为它是创建此问题时的月份)

【问题讨论】:

  • 如果您知道从哪个月开始需要数据,为什么不直接使用 select * from table where date_col between '2014-09-01' and curdate()
  • 我会,但这意味着明年它将无法正常工作,因为它仍会从 2014 年 9 月开始获取记录,并且需要从 2015 年 9 月开始。
  • 为什么不使用intval(date('Y')) -1) 来确定该字符串?

标签: php mysql sql date timestamp


【解决方案1】:

你可以构造日期:

where date >= str_to_date(concat(year(now()) - 1, '-09-01'),
                          '%Y-%m-%d') and
      date < now()

我猜你实际上想要一个稍微复杂一点的条件。如果您在年底(比如 12 月)运行查询,您可能需要当年的 9 月:

where date >= str_to_date(concat(year(now()) - (month(now) < 9), '-09-01'),
                          '%Y-%m-%d') and
      date < now()

【讨论】:

  • 完美,正是我想要的。非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多