检查DATETIME是否是14天前

时间:2013-04-24 22:21:20

标签: php mysql sql datetime phpmyadmin

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

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

我不知道如何将activation_date DATETIME与14天期间进行比较......

5 个答案:

答案 0 :(得分:1)

你可以使用datediff:

如果激活的日期= 14,请选择行:

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

WHERE 14 = DATEDIFF(activation_date, $today) 

答案 1 :(得分:0)

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

答案 2 :(得分: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列。

答案 3 :(得分:0)

您可以在where子句

中使用date_sub函数
where activation_date > date_sub(now() ,interval 14 day) and flag <> 0

示例代码here

答案 4 :(得分:0)

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

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