在eventStartTime前三天发送电子邮件

时间:2012-05-30 19:29:47

标签: java mysql sql java-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,
  `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;

我需要在eventStartTime前三天发送电子邮件。我需要查询来获取事件,我希望通过事件获取用户并发送电子邮件。我可以使用DATE_SUB(), 但是我该怎么做呢?我在sql非常糟糕。

我使用Mysql连接器Java。

谢谢!

3 个答案:

答案 0 :(得分:1)

   SELECT * from events where date_add(curdate(),INTERVAL 3 days)=eventStartTime 

这将为您提供3天后的所有活动。

答案 1 :(得分:0)

答案 2 :(得分:0)

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

SELECT CONCAT(eventStartDate - INTERVAL 3 DAY, ' ', eventStartTime)

但是,这不能解决发送电子邮件的问题。你需要一个脚本,而不是经常运行,或者一些调度程序在电子邮件日期到来时发送电子邮件。您可以考虑将电子邮件发送日期/时间存储为表格中的另一个字段,例如emailSendDate

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