jjzjj

mySQL SELECT 即将到来的生日

coder 2023-06-11 原文

我正在尝试编写查询以选择生日在未来 7 天内的数据库用户。

我做了很多研究,但我无法提出可行的解决方案。

生日字段存储为 varchar,例如 '04/16/93' 有什么方法可以处理这个吗?

这是我目前所拥有的:

SELECT * 
FROM   `PERSONS` 
WHERE  `BIRTHDAY` > DATEADD(DAY, -7, GETDATE()) 

我应该说得更清楚,我正在尝试查找生日而不是出生日期。所以我只是在寻找几天和几个月而不是几年。

最佳答案

要获取 future 7 天内的所有生日,请将出生日期与今天之间的年份差添加到出生日期,然后查找它是否在未来 7 天内。

SELECT * 
FROM  persons 
WHERE  DATE_ADD(birthday, 
                INTERVAL YEAR(CURDATE())-YEAR(birthday)
                         + IF(DAYOFYEAR(CURDATE()) > DAYOFYEAR(birthday),1,0)
                YEAR)  
            BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 7 DAY);

如果您想排除今天的生日,只需将 > 更改为 >=

SELECT * 
FROM  persons 
WHERE  DATE_ADD(birthday, 
                INTERVAL YEAR(CURDATE())-YEAR(birthday)
                         + IF(DAYOFYEAR(CURDATE()) >= DAYOFYEAR(birthday),1,0)
                YEAR)  
            BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 7 DAY);

-- Same as above query with another way to exclude today's birthdays 
SELECT * 
FROM  persons 
WHERE  DATE_ADD(birthday, 
                INTERVAL YEAR(CURDATE())-YEAR(birthday)
                         + IF(DAYOFYEAR(CURDATE()) > DAYOFYEAR(birthday),1,0)
                YEAR) 
            BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 7 DAY)
     AND DATE_ADD(birthday, INTERVAL YEAR(CURDATE())-YEAR(birthday) YEAR) <> CURDATE();


-- Same as above query with another way to exclude today's birthdays 
SELECT * 
FROM  persons 
WHERE  DATE_ADD(birthday, 
                INTERVAL YEAR(CURDATE())-YEAR(birthday)
                         + IF(DAYOFYEAR(CURDATE()) > DAYOFYEAR(birthday),1,0)
                YEAR) 
            BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 7 DAY)
     AND (MONTH(birthday) <> MONTH(CURDATE()) OR DAY(birthday) <> DAY(CURDATE()));

这里是 DEMO在所有查询中

关于mySQL SELECT 即将到来的生日,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18747853/

有关mySQL SELECT 即将到来的生日的更多相关文章

  1. ruby-on-rails - 在 Rails 中计算到下一个生日的天数 - 2

    我有一个模型,其中有一个名为birthday的date列。我如何计算距离用户下一个生日还有多少天? 最佳答案 这是一个简单的方法。你要确保捕获今年已经通过的案例(以及尚未通过的案例)classUser=bday(bday-Date.today).to_iendend并证明这一点!(我添加的是timecopgem以保持计算截至今天(2012-10-16)的准确性require'test_helper'classUserTest 关于ruby-on-rails-在Rails中计算到下一个生日

  2. 即将学习3D建模看过来,超高性价比电脑推荐 - 2

    虽说建模还是台式最好,但是需要外出或者带回家工作的时候还是不方便的❌,咱们来看下怎么挑~我们使用的建模软件为3DsMax、maya、zbrush等建模的时候,对显卡和内存的要求较高🉐显卡越好,模型面数多了也不会太卡顿✅当使用Vary插件渲染,此时CPU就开始发挥作用了CPU越好,渲染越快✅1⃣游戏本的预算是多少?🔅入门级:价格在5-6k左右即可🔅进阶级:价格在7.5k-1w往上,需要的显卡和CPU配置更高2⃣选购看哪些参数?🔅一先看显卡,好的独显更重要一些,再来看散热,续航,屏幕🖥以及接口数量等,接口是越多越好,方便外接机械键盘⌨和鼠标🖱,工作中就使用更多🔅显卡看型号📱,同时也要看显卡的几个数

  3. javascript - 如何通过 Facebook API 获取生日? - 2

    我正在设置Facebook登录,并成功获取了first_name、email等内容。但是,我似乎无法弄清楚如何获取生日。如果我如下调用birthday,则不会返回任何内容。FB.api('/me',{fields:'birthday'},function(response){console.log(JSON.stringify(response));})如果我如下调用user_birthday,我会得到这个错误:"error":{"message":"(#100)Triedaccessingnonexistingfield(user_birthday)FB.api('/me',{fie

  4. javascript - 是否有现有或即将推出的 CSS3 选择器来匹配属性名称的子字符串? - 2

    您可以执行[foo^="bar"]来匹配具有foo属性且值以bar开头的节点。有没有办法匹配具有以特定字符串开头的属性name的节点?这个用例是用data-*属性匹配所有节点。编辑:我尝试这样做的原因是为了避免遍历所有节点以查找这些属性(出于性能原因)。我将使用querySelectorAll及其针对旧版浏览器的Sizzlepolyfill。 最佳答案 一种方法是使用.filter()方法:$('element').filter(function(){return$.grep(this.attributes,function(val

  5. ONLYOFFICE中利用chatGPT帮助我们策划一场生日派对 - 2

        近日,人工智能chatGPT聊天机器人爆火,在去年年底发布后,仅仅两个月就吸引了全球近一亿的用户,成为史上最快的应用消费程序,chatGPT拥有强大的学习和交互能力可以被学生,教师,上班族各种职业运用于日常工作,和生活场景如果用户提出不当需求或问题,chatGPT还回给与拒绝或者在回答中绕开敏感问题,因此chatGPT被称为全球最强人工智能ONLYOFFICE  ONLYOFFICE是一款开源免费的办公软件,具备优秀文本文档,电子表格,演示文稿和在线表单模板四合一的模式,强势更新后的7.3版本,添加了chatGPT该项功能的插件,接下来就给大家看一下利用chatGPT怎样帮我们策划一场

  6. ubuntu - Go 没有检测到来自 aws ubuntu 服务器的 SOMAXCONN 更改 - 2

    我正在尝试使用k6对我的golangnet/http服务器进行压力测试.当我使用2048个虚拟用户访问我的awsubuntu服务器时,k6抛出“连接重置”。在互联网上调查,我发现可能是积压队列的问题。阅读一些计算器问题,我试图从sysctl.conf文件修改SOMAXCONN变量。将它从128修改为1024后,当我运行我的主要go程序时:packagemainimport("fmt""log""net/http""strings""golang.org/x/sys/unix")funcmain(){http.HandleFunc("/some_path",handler)fmt.Pri

  7. go - 由于 goroutine,main 即将退出 - 2

    我正在尝试重新实现/修改thispost的第二条评论的代码.我想要多个go例程从堆栈中弹出元素(只要堆栈包含一些东西),以及另一个函数来捕获它们。Thiscodeinplaygroundfuncpop(list*[]int,cchanint){iflen(*list)!=0{result:=(*list)[0]*list=(*list)[1:]fmt.Println("abouttosend",result)c如果我将receiver(c)设为go例程,则只会打印“Main”,并且程序将退出而不等待Scan()函数。即使添加time.Sleep(2)也不会阻止程序退出。为什么我的程序没

  8. 【AIGC】重磅!微软开源Deep Speed Chat,人人拥有ChatGPT的时代正在到来! - 2

    专注AIGC领域的专业社区,关注GPT-4、百度文心一言、华为盘古等大语言模型(LLM)的发展和应用落地,以及国内LLM的发展和市场研究,欢迎关注!目录DeepSpeedChat:基于人工反馈机制的强化学习微软为什么开源DeepSpeedChat

  9. xml - EXI(高效 XML 交换)即将到来……XML API 准备好了吗? - 2

    W3的EXI(高效XML交换)将被标准化。它号称是“最后的二进制标准”。它是存储优化的XML数据的标准处理和存储,与XML模式捆绑在一起(使数据强类型和强结构)。嗯,有很多声称的优势。最让我印象深刻的是处理和内存效率测量。我在问自己,所有已建立的公司将会发生什么XMLAPI?有一段与我的问题相关:4.2ExistingXMLProcessingAPIsAsEXIisanencodingoftheXMLInfoset,anEXIimplementationcansupportanyofthecommonly-usedXMLAPIsforXMLprocessing,soEXIhasnoim

  10. 国内首家专注影视文化产业的数藏平台“神缘”即将上线 - 2

     相比于海外NFT在各路资本、明星、开发者的追捧,层出不穷的项目创意玩法,人们的注意力似乎都从一个NFT的艺术本质,全部转移到了“地板价”及市值等,在风口下人们都想更“艺术”的玩转“区块链”。一方面可以”一不小心“赚得名声利益“,另一方面也向其所在的社交圈骄傲的表达自己的”艺术涵养“。而数字藏品,这个更具“中国特色”的新形态,其概念也是在2021年10月,国家监管下正式提出,国内NFT发行平台的NFT字样全部改为“数字藏品”,不同于实物文创产品,以区块链技术为基地,区分为区块链作品版权和区块链数字出版产品两种类型。对应特定的作品、艺术品生成的唯一数字凭证,在保护其数字版权的基础上,实现数字发行

随机推荐