2

我想要做的是查询数据库中的一个表,以便我可以在他们激活帐户后 14 天发送一封欢迎电子邮件......

成功发送电子邮件后,我将设置标志 = 0,以便将来不再发送电子邮件。

我不知道如何将activation_dateDATETIME 与 14 天的时间段进行比较...

4

5 回答 5

1

你可以使用 datediff:

如果激活的 datediff = 14,请选择以下行:

http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html

WHERE 14 = DATEDIFF(activation_date, $today) 
于 2013-04-24T22:25:16.540 回答
0
SELECT * FROM my_table WHERE DATEDIFF( NOW() , activation_date ) = 14 AND active = 1 AND msg_welcome = 0

这是我需要的查询!非常感谢你们......只需要稍微修改你的建议。

于 2013-04-24T22:48:05.840 回答
0

您可以在 where 子句中使用 date_sub 函数

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

示例代码在这里

于 2013-04-24T22:28:56.250 回答
0

您可以在查询中将您的 activation_date 与 DATE_SUB(NOW(), INTERVAL 14 day) 进行比较。

于 2013-04-24T22:26:20.113 回答
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列。

于 2013-04-24T22:28:06.920 回答