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 の 3 日前にメールを送信する必要があります。イベントを取得するにはクエリが必要です。イベントを通じてユーザーを取得し、電子メールを送信したいと考えています。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 に答える