0

私は Web デザイン会社を経営しており、顧客にホスティングを毎年販売しています。MySQL データベースからすべての顧客を読み取り、1 年が経過したかどうかを確認する Ruby スクリプトを作成しています。有効期限が切れている(または少なくとも期限が近づいている)場合は、メールを送信してもらいたいです。

電子メールの部分がダウンしていますが、Time クラスまたは SQL ベースの別のソリューションを使用して 1 年が経過したかどうかを確認するにはどうすればよいでしょうか?

(この編集を振り返ってみると、必要な SQL がよくわかっていないように見えるので、それに関するヘルプは大歓迎です)

4

1 に答える 1

5

Ruby を使用してこの問題を本当に解決したい場合は>>、 a を処理するときに使用して、月Date単位で増加させることができますN(たとえば、顧客に支払いを処理する時間を与える11など)。

このインクリメントされた日付を取得したら、それを現在の日付と比較して、それよりも小さいか等しいか (つまり、日付が過去のものか) を確認する必要があります。メールを送信します。

>> (Date.strptime('2012-07-07') >> 11).to_s
=> "2013-06-07"

>> if (Date.strptime('2011-06-15') >> 11) < DateTime.now
>>   print "More than 11 months has passed!"
>> end
More than 11 months has passed!=> nil

ただし、この問題をSQL クエリで直接解決する方がはるかに優れています。これは、次のように要約されます。

SELECT field1, field2, ..., fieldN
FROM `customers_table`
WHERE ADDDATE(last_payment, INTERVAL 11 MONTHS) <= NOW ()
于 2012-07-07T04:50:10.163 に答える