我经营着一家网页设计公司,我们还每年向客户销售托管服务。我正在编写一个Ruby脚本,从MySQL数据库中读取所有客户,并检查一年是否已经过去。如果它已经(或至少即将到期),我希望它给他们发一封电子邮件。
我已经记下了电子邮件部分,但我该如何检查使用Time类或其他基于SQL的解决方案是否已经过去了一年?
(回顾这次编辑,我似乎不太了解所需的SQL,因此非常感谢您提供的任何帮助)
如果您真的想使用ruby解决这个问题,您可以在处理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 ()