检索特定月份内但小于当年且小于当前日期的 MySql 条记录
Retrieve MySql Records Within a Specific Month but Less than the current year and Less than the current Day
我有许多 MySQL 条带有日期时间记录的记录。假设它们在一个名为 my_table 的 table 中,它们包括以下记录。
ID Date
1 2021-04-02
2 2020-04-13
3 2019-04-29
4 2018-04-30
5 2019-06-24
我想获取所有记录:
- 四月 (4)
- 年份小于当前年份 2021
- 日期小于当前日期(发帖日期为24号)
我能够通过以下方式整理出月份和年份部分:
SELECT * FROM my_table where date LIKE '%-4-%' AND date < '2021-04-01 00:00:00';
这将获取 4 月内不在 4 月当月的所有记录。但是,它也给了我 4 月份内的所有记录,即使它们大于当前的 24 日。
2 2020-04-13
3 2019-04-29
4 2018-04-31
我想要的 return 是 4 月份内所有前一年的记录,但天数小于或等于当前 day/time。在这种情况下,记录 returned 应该是:
2 2020-04-13
是否可以在一次查询中执行此操作?
在您的条件下使用函数 DAY()
、MONTH()
和 YEAR()
:
SELECT *
FROM my_table
WHERE MONTH(date) = MONTH(CURRENT_DATE)
AND YEAR(date) < YEAR(CURRENT_DATE)
AND DAY(date) < DAY(CURRENT_DATE);
参见demo。
这应该可以满足您的要求:
SELECT *
FROM `my_table`
WHERE MONTH(`date`) = 4 AND
YEAR(`date`) < YEAR(NOW())
AND DAY(`date`) < DAY(NOW())
我有许多 MySQL 条带有日期时间记录的记录。假设它们在一个名为 my_table 的 table 中,它们包括以下记录。
ID Date
1 2021-04-02
2 2020-04-13
3 2019-04-29
4 2018-04-30
5 2019-06-24
我想获取所有记录:
- 四月 (4)
- 年份小于当前年份 2021
- 日期小于当前日期(发帖日期为24号)
我能够通过以下方式整理出月份和年份部分:
SELECT * FROM my_table where date LIKE '%-4-%' AND date < '2021-04-01 00:00:00';
这将获取 4 月内不在 4 月当月的所有记录。但是,它也给了我 4 月份内的所有记录,即使它们大于当前的 24 日。
2 2020-04-13
3 2019-04-29
4 2018-04-31
我想要的 return 是 4 月份内所有前一年的记录,但天数小于或等于当前 day/time。在这种情况下,记录 returned 应该是:
2 2020-04-13
是否可以在一次查询中执行此操作?
在您的条件下使用函数 DAY()
、MONTH()
和 YEAR()
:
SELECT *
FROM my_table
WHERE MONTH(date) = MONTH(CURRENT_DATE)
AND YEAR(date) < YEAR(CURRENT_DATE)
AND DAY(date) < DAY(CURRENT_DATE);
参见demo。
这应该可以满足您的要求:
SELECT *
FROM `my_table`
WHERE MONTH(`date`) = 4 AND
YEAR(`date`) < YEAR(NOW())
AND DAY(`date`) < DAY(NOW())