MySQL SP:获取过去4个月,月份和年份的记录



我正在创建一个存储过程来获取前4个月的所有记录,给定月份和年份变量。

etimestamp列的日期时间格式为12/30/2020 12:000:00 AM

如果inMonth>= 4,则此语句有效:

SELECT * FROM table_name
WHERE Month(etimestamp) in (inMonth , inMonth - 1, inMonth - 2, inMonth - 3) AND
Year(etimestamp) = inYear

但是,如果inMonth不是>= 4,这将不起作用。

我想要一个查询,也将为去年工作。

例如:inMonth = 2ANDinYear = 2020

期望输出记录:

2020年2月
  • 2020年1月
  • 2019年12月
  • 2019年11月

你可以试试这个

SELECT * FROM table_name WHERE etimestamp between now() - INTERVAL 4 MONTH and now()

非常感谢@ Syhd先生的回答。我有了开始的想法。我对你的回答做了一些修改,使这一条款包括在内。

现在是我的最后一个查询:

SELECT
*
FROM
table_name
WHERE
(STR_TO_DATE(CONCAT('01, ', inMonth, ', ', inYear),'%d, %m, %Y') - INTERVAL 3 MONTH) <= etimestamp AND
etimestamp <= (STR_TO_DATE(CONCAT('01, ', inMonth, ', ', inYear),'%d, %m, %Y') + INTERVAL 1 MONTH)

帮助链接:MySQL " between "子句不包含?

最新更新