【问题标题】:How to get users having birthday today?如何让用户今天过生日?
【发布时间】:2018-04-14 23:36:49
【问题描述】:

我需要在我的应用程序中向用户发送生日祝福。

我有一个表User,列dateOfBirth。我需要一个查询来检索出生日期与今天匹配的用户。

例如,如果用户有dateOfBirth1983-11-02 00:00:00,我必须向用户发送生日祝福。

提前谢谢你。

【问题讨论】:

  • 表结构会很好。另外,您尝试过什么?
  • 感谢您的重播@BorisSchegolev。在表列名称是 dateOfBirth 和一个值是 1983-11-02 00:00:00 。我必须向用户发送生日祝福。
  • 在 MySQL 文档中查找日期函数:dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html。查看如何获取当前日期,查看如何提取日期和月份并进行比较。
  • 问题很清楚,我只是想解释一下为什么人们会否决你的问题。

标签: mysql sql hibernate


【解决方案1】:

您目前正在做的是(每天)从 SQL 中提取数据并撰写和发送电子邮件以每天手动发送愿望。如果我建议你更好的方法呢?

有一个名为Wishing Application 的应用程序可以轻而易举地发送生日和工作周年纪念邮件。

至少它只需要两件事 excel 文件 以及希望的详细信息(日期、姓名、电子邮件)和一个配置文件(application.properties),仅此而已,你可以走了。

还有各种options to run 本地应用程序(命令行、前台、后台、docker、windows 调度程序、unix cron 等)云。

应用程序是highly configurable,您可以配置各种详细信息,例如:

  • 工作簿加载选项
  • 带有愿望的图片选项。
  • SMTP 配置
  • 其他应用程序级别的配置,例如何时发送愿望、迟到的愿望、日志记录等。

【讨论】:

    【解决方案2】:

    你可以用这个简单的查询来做到这一点:

    SELECT Name from table_name
    where EXTRACT(MONTH FROM BirthDate)=DAY(CURDATE())
    and EXTRACT(DAY FROM BirthDate) = MONTH(CURDATE())
    

    【讨论】:

      【解决方案3】:
      SELECT name, email 
      FROM user
      WHERE MONTH(dateOfBirth) = MONTH(NOW()) AND DAY(dateOfBirth) = DAY(NOW())
      

      既然你在hibernate标签中问过这个问题。 上面的 hibernate 中的查询将如下所示。

      String hql = "FROM user  WHERE MONTH(dateOfBirth) = MONTH(NOW()) AND DAY(dateOfBirth) = DAY(NOW())";
      
      Query q = session.createQuery(hql);
      
      List<user> l = q.list();
      

      【讨论】:

        【解决方案4】:

        选择dateOfBirth列的月份和日期与今天匹配的行。

        查询

        select * from `users`
        where MONTH(`dateOfBirth`) = MONTH(NOW())
        and DAY(`dateOfBirth`) = DAY(NOW());
        

        【讨论】:

          【解决方案5】:

          你可以这样做:

          SELECT * FROM User WHERE MONTH(dateOfBirth) = MONTH(NOW()) AND DAY(dateOfBirth) = DAY(NOW());
          

          【讨论】:

          • 感谢您的重播@malik。但此查询不起作用,因为年份不匹配。
          • 您有没有出生数据在当年的用户?
          • 哈哈... 这将选择今天出生的用户..
          • 对不起,现在检查答案,我现在有点醉了:D
          • 很高兴听到 :)
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-02-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-11-30
          相关资源
          最近更新 更多