首页 > 数据库 > mysql教程 > 如何查找未来 14 天内有周年纪念日的事件(忽略年份)?

如何查找未来 14 天内有周年纪念日的事件(忽略年份)?

Mary-Kate Olsen
发布: 2025-01-02 21:11:39
原创
782 人浏览过

How to Find Events with Anniversaries in the Next 14 Days (Ignoring the Year)?

如何执行忽略年份的日期数学

任务是选择在接下来的 14 天内有周年纪念日的日期,不包括计算年份。

示例查询

方法 1:生成一系列周年纪念日

WITH anniversaries AS (
  SELECT event_id, event_date,
         (event_date + (n || ' years')::interval)::date AS anniversary
  FROM   event, generate_series(13, 113) n
)
SELECT event_id, event_date
FROM   anniversaries
WHERE  anniversary BETWEEN current_date AND current_date + interval '14' day;
登录后复制

方法 2:计算周年纪念日

SELECT event_id, event_date
FROM   event
WHERE  extract(month FROM age(current_date + 14, event_date))  = 0
AND    extract(day   FROM age(current_date + 14, event_date)) <= 14;
登录后复制

方法 3:使用函数

CREATE OR REPLACE FUNCTION this_years_birthday(_dut date)
  RETURNS date
  LANGUAGE sql AS
$func$
SELECT (date_trunc('year', now()) + ( - date_trunc('year', )))::date
$func$;

SELECT *
FROM   event e
WHERE  this_years_birthday(event_date) BETWEEN current_date
                                             AND (current_date + 14);
登录后复制

注意:

  • 查询的结果是等效的。
  • 查询的性能可能会取决于数据的大小和分布。

以上是如何查找未来 14 天内有周年纪念日的事件(忽略年份)?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板