【发布时间】:2023-03-20 22:37:01
【问题描述】:
我正在设置一个脚本来每天运行并检查是否符合特定年龄的成员 - 可以在 CMS 中设置自动电子邮件,并指定在任何年龄(以月或年为单位)发送。为了通过 PHP 和 MySQL 处理这个问题,月数作为参数传递给一个方法,我处理如下。但是,我不确定我是否会以最简单的方式解决这个问题!部分由于英国日期格式的格式,我正在从字符串转换为日期时间到 unix 时间戳以进行比较。 谁能找到更好的方法来解决这个问题?谢谢
// If num of months provided is a year, make calculation based on exact year
if ($age_in_months % 12 == 0)
{
// Using 365 days here (60 * 60 * 24 * 365 = 3153600)
$clause = 'WHERE ROUND((UNIX_TIMESTAMP() - UNIX_TIMESTAMP(STR_TO_DATE(dob, "%d/%m/%Y"))) / 31536000) = ' . $age_in_months;
}
else
{
// Using 30 days as avg month length (60 * 60 * 24 = 86400) - convert months to days
$clause = 'WHERE ROUND((UNIX_TIMESTAMP() - UNIX_TIMESTAMP(STR_TO_DATE(dob, "%d/%m/%Y"))) / 86400) = ' . $age_in_months * 30;
}
【问题讨论】:
-
别傻了,以正确的格式存储日期。这是你首先要做的。
-
见下面的评论,我在这里卡住的日期存储格式