【问题标题】:Check to see if one year has passed检查是否已经过去一年
【发布时间】:2012-07-07 12:11:01
【问题描述】:

我经营着一家网页设计公司,我们还每年向客户销售托管服务。我正在编写一个 Ruby 脚本来从 MySQL 数据库中读取所有客户,并检查是否已经过去了一年。如果它已经(或至少接近到期),我希望它向他们发送一封电子邮件。

我已经关闭了电子邮件部分,但是如何使用 Time 类或其他基于 SQL 的解决方案来检查是否已经过去一年?

(回顾这次编辑,似乎我不太了解所需的 SQL,因此感谢您提供任何帮助)

【问题讨论】:

  • 你不会在 SQL 中这样做吗?
  • 一年过去和即将到期是两种不同的情况。您是否正在寻找两个查询
  • @Mechanicalsnail - 请详细说明我将如何做到这一点。
  • @GhostRider - 似乎是我。

标签: mysql ruby datetime time


【解决方案1】:

如果你真的想用 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 ()

【讨论】:

    猜你喜欢
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 2011-04-17
    • 2014-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多