微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

检索特定月份内但小于当前年份且小于当前日期的 MySql 记录

如何解决检索特定月份内但小于当前年份且小于当前日期的 MySql 记录

我有许多带有日期时间记录的 MysqL 记录。假设它们位于名为 my_table 的表中,并且它们包含以下记录。

ID       Date
1       2021-04-02
2       2020-04-13
3       2019-04-29
4       2018-04-30
5       2019-06-24

我想在以下位置获取所有记录:

  1. 月份是四月 (4)
  2. 该年份小于 2021 年
  3. 这一天比当天少(发帖当天是 24 号)。

我能够整理出月份和年份部分:

SELECT * FROM my_table where date LIKE '%-4-%' AND date < '2021-04-01 00:00:00';

这将使我获得四月内所有不在当前四月的记录。但是,它也给了我 4 月内的所有记录,即使它们大于 24 日的当前日期。

2       2020-04-13
3       2019-04-29
4       2018-04-31

我希望它返回的是 4 月份内的所有前一年记录,但天数小于或等于当前日期/时间。在这种情况下,返回的记录应该是:

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()) 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。