【问题标题】:MYSQL select dates before todayMYSQL 选择今天之前的日期
【发布时间】:2025-11-29 00:40:01
【问题描述】:

我有一条 SQL 语句,希望选择今天之前至少 7 天之前的所有日期

我使用的代码如下:

SELECT * FROM letter WHERE letter.l_date > DATE_SUB(CURDATE(), INTERVAL 7 DAY)

但是没有得到想要的结果。我不明白我出了什么问题。有人可以帮我吗?

【问题讨论】:

  • 除了最后 7 天之外,您是指今天之前的所有天吗?或者换句话说,所有日期早于 7 天前?

标签: mysql


【解决方案1】:

因此,如果您只需要包括今天在内的最近 7 天,您需要指定 l_date 是现在之前:

SELECT * FROM letter WHERE letter.l_date < DATE_SUB(CURDATE(), INTERVAL 7 DAY)

【讨论】:

  • 我需要所有日期,不包括从今天起 7 天的范围。 (例如:- '2015-10-24' 之前的日期)。换句话说,不包括从今天起的最后 7 天。
  • 今天之后你还需要它们吗?
  • 今天之前。但不包括从今天起过去的 7 天
  • 现在检查我的编辑,你的大于应该是小于。
【解决方案2】:

如果您需要最近 7 天的数据,请使用 DATE(NOW()) - INTERVAL 7 DAY

SELECT * FROM letter WHERE letter.l_date > DATE(NOW()) - INTERVAL 7 DAY

【讨论】:

  • 我需要所有日期,即从今天开始的 7 天前
  • SELECT * FROM letter WHERE letter.l_date >= DATE(NOW()) - INTERVAL 7 DAY
  • 你可以试试这个查询吗?
  • 如果您有数据丢失,那么它不会在那里?我们可以查看您的数据吗?
  • 字母表包括 l_dates 为:'2015-10-30'、'2015-10-29'、'2015-10-28'、'2015-10-26'、'2015-10 -23' 那样。但是上面的语句也输出 '2015-10-29', '2015-10-28'。
【解决方案3】:

另一种方式你可以使用DATEDIFF函数

SELECT * FROM letter WHERE DATEDIFF(NOW(), letter.l_date) > 7

【讨论】: