一尘不染

MySQL选择上个月到(now()-1个月)的所有行,以进行比较

mysql

我需要一些帮助来编写MySQL查询,以显示上个月的行,但不显示整个月的行,仅显示直到现在的同一天,一小时和一分钟,直到now()为止,而仅显示一个月前。

因此,例如,如果今天是下午5:25的5/19,我需要选择4/19午夜12:00 am 4/1到5:25 pm的行(当然也要从同一年开始)。

谢谢!


阅读 1442

收藏
2020-05-17

共1个答案

一尘不染

您可以通过计算前一个月的last_day并添加一天来获得该月的第一天。这很尴尬,但我认为这比将日期格式化为字符串并将其用于计算更好。

select 
  *
from
  yourtable t
where
  /* Greater or equal to the start of last month */
  t.date >= DATE_ADD(LAST_DAY(DATE_SUB(NOW(), INTERVAL 2 MONTH)), INTERVAL 1 DAY) and
  /* Smaller or equal than one month ago */
  t.date <= DATE_SUB(NOW(), INTERVAL 1 MONTH)
2020-05-17