您的位置:首页 > 新闻 > 资讯 > 网站界面设计原则_郑州专业网站制作服务费用_sem代运营公司_做个网页需要多少钱?

网站界面设计原则_郑州专业网站制作服务费用_sem代运营公司_做个网页需要多少钱?

2024/10/7 20:33:32 来源:https://blog.csdn.net/zs343961443/article/details/142656003  浏览:    关键词:网站界面设计原则_郑州专业网站制作服务费用_sem代运营公司_做个网页需要多少钱?
网站界面设计原则_郑州专业网站制作服务费用_sem代运营公司_做个网页需要多少钱?

需求:

获取最近7天生日的用户,并且从近到远排序。

如果使用mysql查询,如何实现呢?

看了一堆帖子,没一个说到点子上。顿时感觉程序员水平确实良莠不齐,甚至有一些还在误人子弟。

问了ai大模型,更是不尽人意。

遂自己整一个。

CREATE TABLE `kf_studio_member`
(
`id_` bigint(20) NOT NULL COMMENT 'id',
`birth_day_` date DEFAULT NULL COMMENT '生日',
`create_time_` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time_` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id_`)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4 COMMENT ='会员信息';


select * from (
#不跨年
SELECT id_, DATEDIFF(CAST(CONCAT(YEAR(CURRENT_DATE),DATE_FORMAT(birth_day_,'-%m-%d'))AS DATE),CAST(DATE_FORMAT(CURRENT_DATE,'%y-%m-%d') AS DATE)) diff FROM kf_studio_member 
and DATEDIFF(CAST(CONCAT(YEAR(CURRENT_DATE),DATE_FORMAT(birth_day_,'-%m-%d'))AS DATE),CAST(DATE_FORMAT(CURRENT_DATE,'%y-%m-%d') AS DATE)) BETWEEN 0 AND 7
UNION all   
#跨年
SELECT id_, DATEDIFF(CAST(CONCAT(YEAR(CURRENT_DATE)+1,DATE_FORMAT(birth_day_,'-%m-%d'))AS DATE),CAST(DATE_FORMAT(CURRENT_DATE,'%y-%m-%d') AS DATE)) diff  FROM kf_studio_member
and DATEDIFF(CAST(CONCAT(YEAR(CURRENT_DATE)+1,DATE_FORMAT(birth_day_,'-%m-%d'))AS DATE),CAST(DATE_FORMAT(CURRENT_DATE,'%y-%m-%d') AS DATE)) BETWEEN 0 AND 7) t order by diff

为什么你写的有问题?因为你没有考虑跨年的情况:

如今天是12月28号,最近7天,是不是就到明年1月份去了?

如你所见,是的,这个sql效率不高。

适用于数据量少,或查询范围限定之后数据量少的情况。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com