检查 DATETIME 是不是为 14 天前

Posted

技术标签:

【中文标题】检查 DATETIME 是不是为 14 天前【英文标题】:Checking to see if a DATETIME was 14 days ago检查 DATETIME 是否为 14 天前 【发布时间】:2013-04-24 22:21:20 【问题描述】:

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

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

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

【问题讨论】:

看看DATEDIFF函数:mysqltutorial.org/mysql-datediff.aspx你将使用它来计算当前日期和你的activation_date之间的差异 【参考方案1】:

你可以使用 datediff:

如果激活的 datediff = 14,则选择该行:

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

WHERE 14 = DATEDIFF(activation_date, $today) 

【讨论】:

【参考方案2】:

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

【讨论】:

你能写一个简单的例子吗? 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 我认为activation_date 是用户激活帐户的时间,并且该功能将在 14 天后运行。 DATE_SUB(NOW(), INTERVAL 14 day) 获取 14 天前的时间,因此我的查询应该获取所有早于 14 天的记录。您的 where 子句永远不会选择任何内容,因为它基本上总是尝试执行“WHERE x=x+14”。必须以某种方式涉及 NOW(),因为您希望比现在早 14 天。【参考方案3】:

使用 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 列。

【讨论】:

【参考方案4】:

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

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

示例代码here

【讨论】:

&lt;&gt; 运算符是什么意思? 表示不相等(与 != 相同)【参考方案5】:
SELECT * FROM my_table WHERE DATEDIFF( NOW() , activation_date ) = 14 AND active = 1 AND msg_welcome = 0

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

【讨论】:

以上是关于检查 DATETIME 是不是为 14 天前的主要内容,如果未能解决你的问题,请参考以下文章

SAP 数据类型 dats

检查 DateTime 类型的值是不是在视图中为空,如果为空则显示空白

如何检查 SQLDataReader 项是不是为 DateTime os String 类型值?

C# 将 DateTime 转换为 Sql Server 2005 格式

检查 pandas 中的 datetime 对象是不是有时区?

PHP 检查 DateTime 的实例?