2013-04-24 55 views
2

我想要做的就是查詢數據庫中的表,使他們有激活帳戶後,我可以發送歡迎電子郵件14天......檢查,看是否有DATETIME是14天前

一旦我成功發送電子郵件,我將設置標誌= 0,以便將來不再發送電子郵件。

我不知道如何activation_date DATETIME比較14天的期限......

+1

查看'DATEDIFF'函數:http://www.mysqltutorial.org/mysql-datediff.aspx您將使用它來計算**當前日期**和您的'activation_date'之間的差異。 – 2013-04-24 22:25:38

回答

0

您可以查詢比較你activation_date到DATE_SUB(NOW(),間隔14天)。

+0

Can你寫一個簡單的例子? – dcolumbus 2013-04-24 22:28:41

+0

SELECT * FROM my_table WHERE activation_date 2013-04-24 22:31:33

+0

我不想DATE_SUB ...我想採取activation_date並添加14天到它...不? 'SELECT * FROM bid_tag WHERE activation_date = DATE_ADD(activation_date,INTERVAL 14 day)AND active = 1 AND msg_welcome = 0' – dcolumbus 2013-04-24 22:44:31

0

使用DATEDIFF()函數,這裏是看它是如何工作的例子:http://sqlfiddle.com/#!2/a2581/7851

Select '2013-04-10', 

case 
when datediff(now() , '2013-04-10') = 14 
then 'Send eMail' 
else 'Don''t send eMail' 
end 

as SendeMail 

UNION ALL 


Select '2013-04-11', 

case 
when datediff(now() , '2013-04-11') = 14 
then 'Send eMail' 
else 'Don''t send eMail' 
end 

as SendeMail 

UNION ALL 


Select '2013-04-15' , 

case 
when datediff(now() , '2013-04-15') = 14 
then 'Send eMail' 
else 'Don''t send eMail' 
end 

as SendeMail 

當然,你可以在一個WHERE語句中使用它...

WHERE datediff(now() , '2013-04-11') = 14 

使用now()函數獲取當前日期。我的示例日期(2013-04-11)應該替換爲您的activation_date列。

0

您可以在where子句中使用DATE_SUB功能

where activation_date > date_sub(now() ,interval 14 day) and flag <> 0 

示例代碼here

+0

'<>'運算符是什麼意思? – dcolumbus 2013-04-24 22:34:49

+0

<>表示不等於(與!=相同) – 2013-04-24 22:36:36

0
SELECT * FROM my_table WHERE DATEDIFF(NOW() , activation_date) = 14 AND active = 1 AND msg_welcome = 0 

這是我所需要的查詢!謝謝很多人......只是稍微修改一下你的建議。