我正在创建一个存储过程来获取前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 "子句不包含?