php - MySQL 日期比较建议

标签 php mysql datetime

我正在设置一个脚本来每天运行并检查满足特定年龄的成员 - 可以在 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;
        }   

最佳答案

  • 更改该列以键入日期或日期时间
  • 不要使用英国日期格式,使用ISO-8601格式
  • 和该列的索引

关于php - MySQL 日期比较建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4492729/

相关文章:

php - Eloquent 查询,检查电子邮件集合中是否有已批准每封电子邮件的批准者(当并非所有电子邮件都具有approval_status时)

php - HTML anchor 导致我的 php $_POST 变量被设置为数组

php - 使用 Codeigniter 加入查询

sql - 如何检查 hive 中的一串日期时间是否符合要求?

javascript - html 日期时间形式

php - 理解正则表达式

mysql 计算一个字段链接到另一个字段的次数

mysql - sql mariadb,分区语法错误

mysql - 如何在 AFTER UPDATE 触发器中引用最近更新的行

c# - 使用 Code-First MVC5 EF6 在 SQL 表中存储 DateTime 属性而不是字节数组