Php 如何检查相对日期?

Php 如何检查相对日期?,php,mysql,Php,Mysql,我正在编写密码恢复代码,该代码使用令牌和存储在日期(“Y-m-d H:I:s”)格式中的日期,例如2012-09-06 18:59:53。我使用下面的代码检查用户id的令牌密钥是否存在: $sql = mysql_query("SELECT * FROM `recoveryemails` WHERE `UserID` = '$uid' and `Key` = '$key' and `expDate` >= '$curDate'"); 我需要在检索expDate后添加另一个条件,以使用PH

我正在编写密码恢复代码,该代码使用令牌和存储在
日期(“Y-m-d H:I:s”)
格式中的日期,例如
2012-09-06 18:59:53
。我使用下面的代码检查用户id的令牌密钥是否存在:

$sql = mysql_query("SELECT * FROM `recoveryemails` WHERE `UserID` = '$uid' and `Key` = '$key' and `expDate` >= '$curDate'");
我需要在检索expDate后添加另一个条件,以使用PHP检查它是否早于3天。有人能帮我解决这个PHP代码吗?

在MySQL中

expDate > DATE_SUB(NOW(), INTERVAL 3 Days)
在MySQL中

expDate > DATE_SUB(NOW(), INTERVAL 3 Days)

只需将MySQL日期结果包装在strotime()中并与strotime(“-3天”)进行比较

只需将MySQL日期结果包装在strotime()中并与strotime(“-3天”)进行比较

在MySQL中要容易得多:
其中。。。和expdate>=DATE\u SUB(现在(),间隔3天)

但如果您坚持使用PHP,则需要:

$threedaysago = strtotime("-3 days");
$expdate = strtotime($row['expDate']);
if( $expdate >= $threedaysago) { /* more recent than three days ago */ }

在MySQL中要容易得多:
WHERE。。。和expdate>=DATE\u SUB(现在(),间隔3天)

但如果您坚持使用PHP,则需要:

$threedaysago = strtotime("-3 days");
$expdate = strtotime($row['expDate']);
if( $expdate >= $threedaysago) { /* more recent than three days ago */ }

我真的推荐纯SQL路线。只需将
expDate
字段设置为时间戳类型,并将其默认值设置为
CURRENT\u timestamp
,在垃圾清理中删除所有过期的行。我坚持,因为mysql存在一些问题,当我试图通过php回显今天的日期时,它说今天是第三天,而当我试图通过mysql获取今天的日期时,它显示的是今天第四天的正确日期。我不知道为什么mysql和PHP会有如此大的时间差。预览mysql和PHP的时区设置,然后重新启动服务器。是的,我认为我应该这样做,因为我也想使用mysql方法。我真的建议使用纯SQL路由。只需将
expDate
字段设置为时间戳类型,并将其默认值设置为
CURRENT\u timestamp
,在垃圾清理中删除所有过期的行。我坚持,因为mysql存在一些问题,当我试图通过php回显今天的日期时,它说今天是第三天,而当我试图通过mysql获取今天的日期时,它显示的是今天第四天的正确日期。我不知道为什么mysql和PHP会出现这样的时间差预览mysql和PHP的时区设置,然后重新启动服务器。是的,我想我应该这样做,因为我也想使用mysql方法来实现这一点