2012-07-07 90 views
0

我開了一家網頁設計公司,我們也賣主辦每年向我們的客戶。我正在編寫一個Ruby腳本來讀取MySQL數據庫中的所有客戶,並檢查一年是否已經過去。如果它已經(或至少接近即將到期),我希望它發送一封電子郵件給他們。檢查一年了

我有電子郵件發送的部分了,但我會怎麼檢查,看看如果一個人一年使用時間類,或基於SQL中的另一個解決方案通過?

(回頭看這個編輯,它好像我不太知道SQL需要,等等,任何幫助表示讚賞)

+1

你會不會做在SQL中? – 2012-07-07 04:36:15

+0

年已過,接近過期是兩種不同的情況。你在尋找兩個查詢 – Bijendra 2012-07-07 04:39:46

+0

@Mechanicalsnail - 請詳細說明我將如何做到這一點。 – Mark 2012-07-07 04:44:55

回答

5

如果你真的想使用Ruby,您可以使用來解決這個問題>>Date處理由N個月遞增它的時候(如,這將給你的客戶一定的時間來處理付款)。

當你有,你應該把它比作當前的日期是什麼,看它是否小於或等於(即日期是在過去。),如果是這種增加日期;發送你的電子郵件。

>> (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()