我有一个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。
谢谢!
答案 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函数解析各个部分(日期,时间,小时,年等)。