3

私は、毎日真夜中過ぎにいくつかの mysql でいくつかの php を実行する cron を持っています。すべての登録ユーザーを (私の Web サイトに) 連れて行き、リマインダーとニュースレターのコピーを送信したいと考えています。ただし、登録から30日ごとにこれを行いたいです。

私はこれまで考えてきました:

SELECT * FROM users
WHERE DATE(DT_stamp) = DATE(NOW() - INTERVAL 30 DAY

ただし、これは登録後 60 日や 90 日ではなく、30 日間しか機能しません。

効果的に私が欲しい:

登録からの日数が30で割り切れる場合

そうすれば、30 日ごとにそのユーザーが SQL で取得されます。

誰かがこの WHERE 句を作成するのを手伝ってくれますか? 私は mysql where day(date1-date2) divisible 30

4

3 に答える 3

2

DATEDIFF関数は、時間を無視して、2 つの日付の差を日数で返します。

SELECT * FROM users
WHERE DATEDIFF(DT_stamp, NOW()) % 30 = 0
于 2013-08-19T10:43:29.433 に答える
1

SQLモジュロ関数を使用MOD():

SELECT * FROM users
WHERE MOD( DATE(DT_stamp) - DATE(NOW()), 30) = 0

mysql では%、同じことを行う演算子を使用することもできます。

SELECT * FROM users
WHERE (DATE(DT_stamp) - DATE(NOW()) % 30 = 0
于 2013-08-19T10:43:43.360 に答える