行ユーザーをデータベースに行として保存しています。ユーザーが自分のタイムゾーンを入力できるようにしています。これはデータベースにも保存されます。
私のアプリは、指定された時間に毎日メールを送信します。メール配信を別の db テーブルに行として保存します。これは、cron ジョブを介して行われます。
タイムゾーンに従って、そのユーザーの最新の電子メールが少なくとも 1400 分 (24 時間前) であり、指定された時間を過ぎたユーザー レコードをクエリで取得したいと考えています。
次のクエリがありますが、mysql のタイムゾーンとユーザーのタイムゾーンを考慮する方法がわかりません。助言がありますか?
SELECT u.id, u.email, u.timezone_offset, u.email_time, TIMESTAMPDIFF(
MINUTE , CONCAT( DATE( MAX( e.created ) ) , ' ', u.email_time ) , NOW( ) ) AS min_since_last_email
FROM Users u
INNER JOIN Emails e ON e.user_id = u.id
WHERE min_since_last_email > 1400
GROUP BY u.id
タイムゾーンのオフセットは GMT からのオフセットなので、私にとっては「-5」のようなものになります。