Java 在事件开始时间前三天发送电子邮件

Java 在事件开始时间前三天发送电子邮件,java,mysql,sql,jakarta-ee,Java,Mysql,Sql,Jakarta Ee,我有一个mysql表,如下所示 CREATE TABLE `events` ( `event_id` int(11) NOT NULL AUTO_INCREMENT, `eventName` varchar(45) DEFAULT NULL, `eventType` varchar(45) DEFAULT NULL, `user_id` varchar(45) DEFAULT NULL, `eventStartDate` date DEFAULT NULL, `event

我有一个mysql表,如下所示

CREATE TABLE `events` (
  `event_id` int(11) NOT NULL AUTO_INCREMENT,
  `eventName` varchar(45) DEFAULT NULL,
  `eventType` varchar(45) DEFAULT NULL,
  `user_id` varchar(45) DEFAULT NULL,
  `eventStartDate` date DEFAULT NULL,
  `eventStartTime` time DEFAULT NULL,
  `eventEndDate` date DEFAULT NULL,
  `eventEndTime` time DEFAULT NULL,
  `eventoptions` varchar(1000) DEFAULT NULL,
  PRIMARY KEY (`event_id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=latin1;
我需要在活动开始前三天发一封电子邮件。我需要查询以获取事件,我希望通过事件获取用户并发送电子邮件。我可以用DATE_SUB()完成吗, 但是我怎么能做到呢?我的sql很差

我使用Mysql连接器Java

谢谢大家!

不要在sql中执行此操作


这将为您提供从现在起3天内的所有事件。

您可以从eventStartDate和eventStartTime获得电子邮件时间,如下所示:

SELECT CONCAT(eventStartDate - INTERVAL 3 DAY, ' ', eventStartTime)
然而,这并不能解决发送电子邮件的问题。你需要一个脚本,而不是每隔一段时间运行一次,或者需要一些计划程序在电子邮件日期到达时发送电子邮件。您可以考虑将电子邮件发送日期/时间存储为表中的另一个字段,如Email SeDeals


考虑使用datetime字段,而不是单独的日期和时间字段。您总是可以使用MySQL函数解析出各个部分(日期、时间、小时、年份等)

嗯,我用的是石英,但我想不出来。如果我可以得到前三天的日期,我可以在那天触发触发器,对吗?间隔3天-你能解释一下吗?“+INTERVAL”或“-INTERVAL”是MySQL中日期数学的另一种语法,不使用date\u ADD或date\u SUB。试着选择“2012-05-30”-间隔3天-见我得到一个错误1305(42000):FUNCTION planner.currdate不存在。它应该是这样的。从事件中选择*,其中日期添加(curdate(),间隔3天)=事件开始时间;间隔3天而不是3天。但这是一个完整且内容丰富的答案。非常感谢。
SELECT CONCAT(eventStartDate - INTERVAL 3 DAY, ' ', eventStartTime)