我想要做的就是查詢數據庫中的表,使他們有激活帳戶後,我可以發送歡迎電子郵件14天......檢查,看是否有DATETIME是14天前
一旦我成功發送電子郵件,我將設置標誌= 0,以便將來不再發送電子郵件。
我不知道如何activation_date
DATETIME比較14天的期限......
我想要做的就是查詢數據庫中的表,使他們有激活帳戶後,我可以發送歡迎電子郵件14天......檢查,看是否有DATETIME是14天前
一旦我成功發送電子郵件,我將設置標誌= 0,以便將來不再發送電子郵件。
我不知道如何activation_date
DATETIME比較14天的期限......
你可以使用DATEDIFF:
如果DATEDIFF到激活= 14,選擇該行:
http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html
WHERE 14 = DATEDIFF(activation_date, $today)
您可以查詢比較你activation_date到DATE_SUB(NOW(),間隔14天)。
Can你寫一個簡單的例子? – dcolumbus 2013-04-24 22:28:41
SELECT * FROM my_table WHERE activation_date
我不想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
使用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
列。
SELECT * FROM my_table WHERE DATEDIFF(NOW() , activation_date) = 14 AND active = 1 AND msg_welcome = 0
這是我所需要的查詢!謝謝很多人......只是稍微修改一下你的建議。
查看'DATEDIFF'函數:http://www.mysqltutorial.org/mysql-datediff.aspx您將使用它來計算**當前日期**和您的'activation_date'之間的差異。 – 2013-04-24 22:25:38