0

我有一个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。

谢谢!

4

3 回答 3

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

这将为您提供 3 天后的所有事件。

于 2012-05-30T19:41:45.437 回答
0

不要在 sql 中执行此操作

http://www.theserverside.com/news/1364726/Job-Scheduling-in-J2EE-Applications

于 2012-05-30T19:36:53.023 回答
0

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

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

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

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

于 2012-05-30T19:42:18.993 回答